Android调用系统组件获取指定格式文件

 try {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("audio/*");
            activity.startActivityForResult(intent, 1001);
        } catch (ActivityNotFoundException e) {
            Log.e(TAG,e.getMessage());
        }

上面这段代码,相信很多人都不会感到陌生,这个就是通过调用系统获取文件的API,将Android手机上所有音频格式的文件显示出来供用户进行文件选择。这里通过intent.setType(“audio/*”)设置了要获取的文件类型。那假如我要指定文件格式呢。

intent.setType("audio/mp4a-latm")

通过上面设置就可以获取该格式类型的文件,那如果我这里还有多选的要求呢,我要选择指定的几种类型的文件呢,比如”audio/mp4a-latm”, “audio/mpeg”, “video/mp4”, “audio/x-wav”。

try {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);

            //设置音视频只显示m4a,mp3,mp4,wav四种类型
            intent.setType("audio/mp4a-latm|audio/mpeg|video/mp4|audio/x-wav");
            //在API>=19之后设置多个类型采用以下方式,setType不再支持多个类型
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                intent.putExtra(Intent.EXTRA_MIME_TYPES,
                        new String[]{
   
   "audio/mp4a-latm", "audio/mpeg", "video/mp4", "audio/x-wav"});
            }
            activity.startActivityForResult(intent, 1001);
        } catch (ActivityNotFoundException e) {
            Log.e(TAG,e.getMessage());
        }

在API19以前,我们可以通过setType,用|进行分隔设置多种文件格式,intent.setType(“audio/mp4a-latm|audio/mpeg|video/mp4|audio/x-wav”);
在API19以及19+ 之后,这种设置方式失效了,系统增加了intent.putExtra(Intent.EXTRA_MIME_TYPES,
new String[]{“audio/mp4a-latm”, “audio/mpeg”, “video/mp4”, “audio/x-wav”});
这种方式供我们设置多种文件格式,但是
intent.setType(“audio/mp4a-latm|audio/mpeg|video/mp4|audio/x-wav”);依旧要设置,没有调用setType,系统不会去获取Extra中的Intent.EXTRA_MIME_TYPES对应的数据。
本文到此结束,内容相对短少,主要用于代码记录。

猜你喜欢

转载自blog.csdn.net/q919233914/article/details/80915810