You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

targetSdkVersion升级到30后Android11设备Intent打开地图、拨号功能失效

Android 11 包可见性导致Intent跳转失败解决方案

问题根因

当应用targetSdkVersion升级到30及以上时,Android 11及更高版本系统默认开启包可见性过滤机制:应用默认只能查询到系统预装应用和少量公开匹配的第三方应用信息,你代码中调用intent.resolveActivity(packageManager)时会返回null,导致拨号、打开地图、跳转应用商店的逻辑被拦截。

修复方案

无需修改原有业务代码,只需在AndroidManifest.xml中新增和<application>节点同级的<queries>声明,配置你需要用到的Intent匹配规则即可:

<manifest ...>
    <!-- 包可见性声明,和application节点同级 -->
    <queries>
        <!-- 匹配拨号盘跳转逻辑 -->
        <intent>
            <action android:name="android.intent.action.DIAL" />
            <data android:scheme="tel" />
        </intent>
        <!-- 匹配地图跳转逻辑 -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="geo" />
        </intent>
        <!-- 匹配应用商店market协议跳转逻辑 -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="market" />
        </intent>
        <!-- 匹配网页版应用商店跳转的备用逻辑 -->
        <intent>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="https" />
        </intent>
    </queries>

    <application ...>
        <!-- 原有配置保持不变 -->
    </application>
</manifest>

注意事项

  • 如果你需要适配的场景较多不想逐个声明,可以申请QUERY_ALL_PACKAGES权限,但该权限属于Google Play敏感权限,上架时需要提交明确的使用场景说明进行审核,非特殊需求不推荐使用。
  • 上述配置添加完成后原有业务代码无需修改,即可正常运行。

内容的提问来源于stack exchange,提问作者Hamza Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:27:01