java.lang.Object | |
↳ | android.provider.MediaStore |
tr: 媒体提供者 包含了外部存储以及内部存储中所有有效的媒体介质
工作中遇到的一个需求 :
获取 SDcard中 所有音频,视频,以及文本文档 进行备份
Nested Classes
class MediaStore.Audio | Container for all audio content.
class MediaStore.Files | Media provider table containing an index of all files in the media storage, including non-media files.
class MediaStore.Images| Contains meta data for all available images.
class MediaStore.Video |
class MediaStore.Audio | Container for all audio content.
class MediaStore.Files | Media provider table containing an index of all files in the media storage, including non-media files.
class MediaStore.Images| Contains meta data for all available images.
class MediaStore.Video |
获取音频文件的一个范例:
(视频仅需更换Audio类为Video类)
int limit = 30;
String[] iStrings = new String[limit];
String[] audioItems = { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA };
Cursor audioCursor = GlobalVars.appContext.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, audioItems, null,
null, MediaStore.Audio.Media._ID + "");
if (audioCursor != null) {
audioCursor.moveToFirst();
int i = 0;
while (audioCursor.getPosition() != audioCursor.getCount()
&& i < limit) {
Uri uri = Uri.parse(audioCursor.getString(audioCursor
.getColumnIndex(MediaStore.Audio.Media.DATA)));
iStrings[i] = uri.getPath();
audioCursor.moveToNext();
i++;
}
audioCursor.close();
}
这里需要注意的是 当使用的API < 11 (3.0)时, 是不支持 MediaStore.Files 类的
所以在 3.0之前 ,还是需要用遍历的方式!
// FIXME 临时设定文档的类型
public static final String[] documentTypeArr = { ".txt", ".pdf" };
private List<File> getDocumentsFiles(File root) {
File files[] = root.listFiles();
if (files != null)
for (File f : files) {
if (f.isDirectory()) {
getDocumentsFiles(f);
} else {
if (isVaildFileType(f))
this.list.add(f);
}
}
return list;
}
private boolean isVaildFileType(File f) {
for (String type : documentTypeArr) {
if (f.getName().contains(type))
return true;
}
return false;
}