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

本文介绍如何在Android中实现多类型文件的选择功能。对于不同版本的API,提供了两种不同的设置方式:API19之前使用|分隔符设置多种文件类型;API19及以后版本则需结合使用setType与addExtra(Intent.EXTRA_MIME_TYPES)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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对应的数据。
本文到此结束,内容相对短少,主要用于代码记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值