Android开发之查找本机的图片、视频、音乐、其他类别文件

来源:互联网 发布:淘宝账户怎么看等级 编辑:程序博客网 时间:2024/04/29 06:04

ContentProvider是Android的四大组件之一,可见它在Android中的作用非同小可。它主要的作用是:实现各个应用程序之间的(跨应用)数据共享,比如联系人应用中就使用了ContentProvider,你在自己的应用中可以读取和修改联系人的数据,不过需要获得相应的权限。其实它也只是一个中间人,真正的数据源是文件或者SQLite等。

Android系统提供的MediaStore功能就是文件类型的ContentProvider,MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。

先来了解一下ContentResolver的查询接口:
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。
Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
selection: 指定查询条件
selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
SortOrder:指定查询结果的排列顺序

1.获取image照片

Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;// 获得图片Cursor mCursor = contentResolver.query(mImageUri, null,MediaStore.Images.Media.MIME_TYPE + "=? or "+ MediaStore.Images.Media.MIME_TYPE + "=?",<span style="white-space:pre"></span>new String[] { "image/jpeg", "image/png" },MediaStore.Images.Media.DATE_MODIFIED);
2.获取music音乐
Uri mMusicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;// 要查询的列String[] mediaColumns = new String[] { MediaStore.Audio.Media.DATA,MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.MIME_TYPE, MediaStore.Audio.Media.SIZE};// 获取音频Cursor cursor = contentResolver.query(mMusicUri, mediaColumns, null,null, MediaStore.Audio.Media.DATE_MODIFIED);
3.获取video视频

Uri mVedioUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;String[] thumbColumns = new String[] {MediaStore.Video.Thumbnails.DATA,MediaStore.Video.Thumbnails.VIDEO_ID };// 要查询的列String[] mediaColumns = new String[] { MediaStore.Video.Media.DATA,MediaStore.Video.Media._ID, MediaStore.Video.Media.TITLE,MediaStore.Video.Media.MIME_TYPE, MediaStore.Video.Media.SIZE};// 获取视频Cursor cursor = contentResolver.query(mVedioUri, mediaColumns, null,null, MediaStore.Video.Media.DATE_MODIFIED);
4.获取非媒体文件,如PDF,Word,zip等
Uri mDocumentUri = MediaStore.Files.getContentUri("external");// 要查询的列String[] mediaColumns = new String[] {MediaStore.Files.FileColumns.DATA,MediaStore.Files.FileColumns.TITLE,MediaStore.Files.FileColumns.MIME_TYPE,MediaStore.Files.FileColumns.SIZE };String selection = MediaStore.Files.FileColumns.MIME_TYPE + "=? or "+ MediaStore.Files.FileColumns.MIME_TYPE + "=?";MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();String mimeTypeZip = mimeTypeMap.getMimeTypeFromExtension("zip");String mimeTypeRAR = mimeTypeMap.getMimeTypeFromExtension("pdf");String[] selectionArgs = new String[] { mimeTypeZip, mimeTypeRAR};// 获取文档Cursor cursor = contentResolver.query(mDocumentUri, mediaColumns,selection, selectionArgs, null);




1 0
原创粉丝点击