Android如何获得指定文件的Uri

来源:互联网 发布:各国网站域名后缀 编辑:程序博客网 时间:2024/05/16 08:40

许多情况下,我们要获得指定文件的Uri,费话不多说直接上代码:

通过已知路径来获得audio文件的uri

/** * 查找在于SDcard中的Audio文件对应于MediaStore  的uri * @param file 音频文件 * @return */public Uri queryUriforAudio(File file){final String where = MediaStore.Audio.Media.DATA + "='"+file.getAbsolutePath()+"'";Cursor cursor=query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, where, null, null);if (cursor == null) {return null;}int id = -1;if (cursor != null) {cursor.moveToFirst();if (!cursor.isAfterLast()) {id = cursor.getInt(0);}cursor.close();}if(id==-1){return null;}return Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, String.valueOf(id));}

关于Video的可能有些不同,见代码

/** * 查找视频文件对应于MediaStore的Uri * @param file 视频文件  * @return */private Uri queryUriForVideo(File file){int id = getId(file);if(id==-1){return null;}return Uri.withAppendedPath(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, String.valueOf(id));}/** * 获得 指定视频文件F在MediaStore中对应的ID * @param f  视频文件 * @return  对应ID */private int getId(File f){int id = -1;// MediaStore.Video.Media.DATA:视频文件路径;// MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4// MediaStore.Video.Media.TITLE: 视频标题 : testVideoString[] mediaColumns = { MediaStore.Video.Media._ID,MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,MediaStore.Video.Media.MIME_TYPE,MediaStore.Video.Media.DISPLAY_NAME };final String where = MediaStore.Video.Media.DATA + "="+"?"; Cursorcursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,mediaColumns, where, new String[]{f.getAbsolutePath()}, null);if(cursor==null){Toast.makeText(this, "没有找到可播放视频文件", 1).show();return -1;}if (cursor.moveToFirst()) {do {id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));//sysVideoList.add(info);} while (cursor.moveToNext());}return id;}






原创粉丝点击