使用Intent调用地图应用失败:点击提交无响应求助
解决Intent跳转地图应用无响应的问题
针对你遇到的点击提交后无法打开地图应用的情况,给你几个排查和解决方向:
检查Android 11+的包可见性限制
从Android 11(API 30)开始,系统默认限制了应用对其他应用的可见性,你的resolveActivity(getPackageManager())可能返回null,导致代码跳过了startActivity。解决方法是在AndroidManifest.xml中添加<queries>标签,声明你要跳转的地图应用包名:<manifest ...> <queries> <!-- 谷歌地图 --> <package android:name="com.google.android.apps.maps" /> <!-- 百度地图 --> <package android:name="com.baidu.BaiduMap" /> <!-- 高德地图 --> <package android:name="com.autonavi.minimap" /> </queries> ... </manifest>临时移除resolveActivity判断测试
先把判断逻辑注释掉,直接调用startActivity,看是否能弹出选择地图应用的弹窗,或者有没有报错:Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("geo:47.6,-122.3")); // 注释掉判断先测试 // if(intent.resolveActivity(getPackageManager())!=null) // { startActivity(intent); // }如果这样能打开,就说明是包可见性的问题,按上面的方法添加queries即可。
验证geo URI格式
可以尝试带缩放级别的URI格式,兼容性更好:intent.setData(Uri.parse("geo:47.6,-122.3?z=15")); // z是缩放级别,范围1-23确认设备安装了地图应用
确保你的测试设备或模拟器上已经安装了至少一款支持geo URI的地图应用(比如谷歌地图、高德地图等),没有的话系统找不到可处理该Intent的应用,自然无响应。
内容的提问来源于stack exchange,提问作者ADITYA KUMAR
相关产品推荐
相关产品推荐

