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

Android createChooser调用地图异常:Nougat无选择器仅打开谷歌地图

解决Android Nougat+中Intent.createChooser不显示地图应用选择器的问题

我之前也碰到过完全一样的问题,核心原因是你用的是谷歌地图专属的URI链接,Android 7.0(Nougat)之后的系统Intent匹配逻辑做了调整,导致系统直接精准匹配到谷歌地图,跳过了选择器环节。

问题根源

你当前使用的http://maps.google.com/maps?q=loc:...是谷歌地图特有的链接,它的Intent Filter会被系统优先识别匹配。在Android 6.0及以下版本,系统仍会弹出选择器,但7.0+的系统会直接拉起匹配度最高的应用(也就是谷歌地图),哪怕你没有设置默认地图应用。

解决方案1:使用标准geo:协议(推荐)

最简洁且兼容性最好的方法是改用Android标准的地理位置URI协议geo:,所有主流地图应用(Waze、Sygic、谷歌地图等)都会注册这个协议的Intent Filter,这样createChooser就能正常显示所有可选应用了。

修改后的代码如下:

// 用标准geo协议构建位置URI
String uri = "geo:" + 24.871560 + "," + 67.129752;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));

// 先检查是否有应用能处理该Intent,避免崩溃
if (intent.resolveActivity(getPackageManager()) != null) {
    Intent chooser = Intent.createChooser(intent, "Open with");
    startActivity(chooser);
}

解决方案2:手动构建选择器(针对谷歌地图专属URI)

如果你因为业务需求必须使用谷歌地图的专属URI,可以通过PackageManager查询所有能处理该Intent的应用,手动构建选择器,强制系统显示所有可选应用:

String uri = "http://maps.google.com/maps?q=loc:" + 24.871560 + "," + 67.129752;
Intent baseIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
PackageManager pm = getPackageManager();

// 查询所有可处理该Intent的应用信息
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(baseIntent, 0);

if (!resolveInfos.isEmpty()) {
    List<Intent> intentList = new ArrayList<>();
    for (ResolveInfo info : resolveInfos) {
        Intent appIntent = new Intent(baseIntent);
        // 指定每个应用的包名,确保精准唤起
        appIntent.setPackage(info.activityInfo.packageName);
        intentList.add(appIntent);
    }

    // 创建选择器,传入第一个应用作为初始选项,其余作为额外选项
    Intent chooserIntent = Intent.createChooser(intentList.remove(0), "Open with");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentList.toArray(new Parcelable[0]));
    
    startActivity(chooserIntent);
}

额外提示

  • 无论哪种方案,都建议添加resolveActivity的判断,避免因无匹配应用导致的崩溃。
  • geo:协议还支持添加地点标签,比如geo:24.871560,67.129752?q=Karachi,Pakistan,地图应用会直接定位到该地点并显示标签。

内容的提问来源于stack exchange,提问作者Muhammad Anas Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:50