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

获取经纬度跳转Google地图调用startActivity崩溃问题排查

解决调用Google Maps时的ActivityNotFoundException问题

看起来你遇到的核心问题是强制指定了Google Maps的具体Activity类名,以及URI格式存在小问题,导致系统找不到对应的Activity进而引发崩溃。咱们一步步来修复:

错误原因分析

  1. 过时的Activity类名:你使用的com.google.android.maps.MapsActivity是旧版Google Maps的类名,新版Google Maps的Activity类已经更新,强制指定这个旧类名会导致系统无法找到目标Activity。
  2. URI格式错误:你的URI里loc:后面多了一个空格,这会导致地图应用无法正确解析经纬度信息。
  3. 兼容性缺失:强制绑定Google Maps的包名,会让没有安装Google Maps的设备直接崩溃,而无法引导用户选择其他可用的地图应用(比如高德、百度地图)。

修复步骤

1. 移除强制指定Activity类名的代码

删掉intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");这一行,让系统自动匹配能处理ACTION_VIEW Intent的应用,既兼容新版Google Maps,也支持其他第三方地图APP。

2. 修正URI格式

去掉loc:后面的空格,正确格式应为loc:纬度,经度,确保地图应用能准确识别经纬度位置。

3. 可选:添加Intent可用性检查(避免无地图应用时崩溃)

在启动Intent前,先检查是否有应用能处理该Intent,给用户友好提示而非直接崩溃。

修改后的完整代码

public void routReq(View view) { 
    if(saloon.getEntity_address() != null) { 
        // 修正URI格式,移除loc:后的空格
        String uri = "http://maps.google.com/maps?q=loc:" + saloon.getEntity_address().getLatitude() + "," + saloon.getEntity_address().getLongitude() + "&mode=d"; 
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)); 
        // 移除强制指定className的代码
        // 可选:检查是否有可用应用处理该Intent
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent); 
        } else {
            Snackbar.make(view, "没有可用的地图应用!", Snackbar.LENGTH_LONG).show();
        }
    } else { 
        Snackbar.make(view, "there's no map for this place!", Snackbar.LENGTH_LONG).show(); 
    } 
}

补充说明

  • 关于InvocationTargetException:这个异常是因为startActivity抛出了ActivityNotFoundException,而你的方法是通过View点击事件反射调用的,所以被包装成了InvocationTargetException,解决根源问题后该异常会自动消失。
  • 无需在你的AndroidManifest.xml中声明Google Maps的Activity,那是Google Maps应用自身Manifest的内容。如果你的应用还没添加网络权限,记得在Manifest中补充:<uses-permission android:name="android.permission.INTERNET" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:36:14