安卓系统会在每次开机之后扫描所有文件并分类整理存入数据库,记录在MediaStore这个类里,通过这个类就可以快速的获得相应类型的文件。

  当然这个类只是给你一个uri,提取文件的操作还是要通过Curosr这个类来完成。

 获得Cursor对象实例的方法必须通过Context实例获得ContextResolver对象,通过这个对象调用query方法。就是这样 mycontext.getContentResolver().query(uri, columns, selection, null, null);

 mycontext通过活动实例获取,其他的就没必要说了 说说参数(官方文档里有详细说明),第一个就是uri说白了就是地址,第二个是选择哪些列(列的名字在官方文档里有需要哪个写那个就够了),第三个是选择指定的行一般都是通过mimetype去选择(传入的参数是sql语句的字符串),第四个没用过,第五个就是排序的要求和第三个差不多 注意前三个参数有点问题就会空指针。
  下面贴一下通过MediaStore类获得URI的代码

    private Uri getContentUri(FileCategory cat) {
        Uri uri;
        String volumeName = "external";
        switch(cat) {
            case Theme:
            case Doc:
            case Zip:
            case Apk:
                uri = Files.getContentUri(volumeName);
                break;
            case Music:
                uri = Audio.Media.getContentUri(volumeName);
                break;
            case Video:
                uri = Video.Media.getContentUri(volumeName);
                break;
            case Picture:
                uri = Images.Media.getContentUri(volumeName);
                break;
           default:
               uri = null;
        }
        Log.e(LOG_CURSOR, "getContentUri");
        return uri;
    }

MediaStore.Files这个类是在API14之后才能用的,貌似是14记不清了。

posted on 2015-06-02 16:18  潜伏的大青蛙  阅读(1738)  评论(0编辑  收藏  举报