安卓应用能否通过代码动态实现与指定文件类型的关联配置
Android 文件类型关联能否在代码中动态配置
结论
你要的这种动态配置方式不支持,文件类型关联规则必须在AndroidManifest.xml中静态声明附带<data>标签的<intent-filter>才能生效,不能仅通过onCreate等运行时代码实现。
核心原因
- 文件类型关联是系统层面的规则,系统需要在应用完全没有启动的状态下就能读取到你的应用支持的文件类型配置,这样用户在文件管理器等第三方应用中打开对应格式的文件时,系统才能把你的应用列到可选打开列表中。如果逻辑只写在Activity的运行时代码里,应用没启动的时候系统根本感知不到你支持这类文件,自然无法完成绑定。
- 四大组件里只有动态注册的广播接收器支持在代码中添加
IntentFilter,Activity、Service、ContentProvider的IntentFilter都必须在Manifest中静态声明,系统才会识别。
替代方案
如果需要在运行时灵活控制实际响应的文件类型,可以提前在Manifest的<intent-filter>中声明所有可能用到的文件类型,之后在接收启动Intent的Activity中做校验:如果Intent携带的文件格式不符合当前业务要求,直接关闭Activity即可,达到只响应指定类型文件的效果。
内容的提问来源于stack exchange,提问作者NightFuryLxD
相关产品推荐
相关产品推荐

