public final class
MediaStore
extends Object
java.lang.Object | |
↳ | android.provider.MediaStore |
The Media provider contains meta data for all available media on both internal and external storage devices.
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; }