如何控制open with消歧对话框(Disambiguation dialog)展示内容,仅显示指定应用?
控制打开方式选择弹窗(Disambiguation dialog)展示内容的实现方法
应用内自定义触发场景(开发者适用)
如果你是要在自己开发的应用中调用打开方式弹窗,可以完全绕过系统默认的选择器,自行控制可选应用范围,步骤如下:
- 第一步:构造你需要跳转的目标
Intent,比如打开指定文件、链接对应的Intent - 第二步:调用系统包管理器接口查询所有符合该Intent的应用信息
核心代码示例(Kotlin):val targetIntent = Intent(Intent.ACTION_VIEW, targetUri) val allMatchApps = packageManager.queryIntentActivities(targetIntent, 0) - 第三步:按照你预先定义的应用包名列表,过滤查询结果,仅保留你需要的2-3个目标应用
- 第四步:自行实现底部弹出面板的UI,把过滤后的应用图标、名称渲染到面板中,用户点击对应选项时,手动设置目标应用的包名、类名到Intent,启动跳转即可
这种方式可以100%自定义弹窗的样式、尺寸、展示位置,完全实现你需要的简洁底部面板效果。
全局修改系统弹窗场景(普通用户适用)
原生系统没有提供全局自定义打开方式弹窗的官方配置项,如果你需要全局修改所有应用触发的打开方式弹窗内容:
- 已Root的设备可以安装Xposed、LSPosed对应的自定义打开方式模块,直接拦截系统弹窗的构建逻辑,过滤掉你不需要显示的应用
- 未Root的设备暂时没有通用的实现方案

内容的提问来源于stack exchange,提问作者Nikatlas
相关产品推荐
相关产品推荐

