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

Android 11调用Google导航提示未安装或禁用该如何修复?

Android 11调用Google Maps报错"google maps is not installed or disabled"修复方案

问题根源

Android 11(API 级别30)引入了包可见性过滤机制,默认情况下应用无法直接查询到设备上安装的其他第三方应用,即便用户已经安装了Google Maps,你的应用也无法检测到它的存在,进而抛出该错误。

可行修复方案

方案1:添加包可见性声明(推荐优先使用)

这是官方要求的标准适配方案,修改后无需改动业务逻辑即可解决90%以上的该类报错:

  • 打开项目根目录下的AndroidManifest.xml文件,在<manifest>根节点(与<application>节点平级,不要嵌套在<application>内部)添加如下配置:
<queries>
    <!-- 声明需要查询Google Maps应用的权限 -->
    <package android:name="com.google.android.apps.maps" />
</queries>

方案2:增加可用性校验兜底逻辑

适配包可见性之后,新增前置检测逻辑,避免用户确实未安装/禁用Google Maps时出现闪退:

  • 调用导航前先执行可用性校验,Kotlin示例代码如下:
fun checkGoogleMapsEnable(context: Context): Boolean {
    return try {
        context.packageManager.getApplicationInfo("com.google.android.apps.maps", 0).enabled
    } catch (e: Exception) {
        // 应用未安装/被禁用
        false
    }
}
  • 检测返回false时,可主动弹出提示引导用户安装或启用Google Maps。

方案3:临时降级适配(不推荐长期使用)

如果需要临时快速修复,可将项目的targetSdkVersion降级到29(Android 10)及以下,此时包可见性机制不会生效,报错也会消失。但该方案不符合后续Google Play的上架版本要求,仅适合临时过渡使用。

提示:若用户设备本身确实没有安装Google Maps、或者安装后手动禁用了该应用,属于正常业务异常,仅需按方案2的逻辑做友好提示即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:04