如何启动 Intent 以打开默认导航应用程序(例如 Google Navigation 或 Google Maps)或让用户有机会在导航应用程序中进行选择。
提前致谢。
您必须使用带有 ACTION_VIEW 和geo
数据方案的 Intent。
使用的问题geo:latitude,longitude
是谷歌地图只以你的点为中心,没有任何别针或标签。
这很令人困惑,特别是如果您需要指向一个精确的位置或/并询问方向。
如果您使用查询参数geo:lat,lon?q=name
来标记您的地理点,它会使用查询进行搜索并忽略纬度和经度参数。
我找到了一种将地图以经纬度居中并显示带有自定义标签的图钉的方法,在询问方向或任何其他操作时显示非常好并且很有用:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=37.423156,-122.084917 (" + name + ")");
startActivity(intent);
此意图来自此处的官方“G 应用程序”意图列表。
尝试:
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=New+York+NY")); startActivity(i);
或者使用这个,这样标准的导航应用就会启动:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);
如果您不想弹出对话框,请在 startActivity 之前添加此行:
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
另请参阅:如何以编程方式检查 Android 中是否安装了应用程序?和Android:检测何时安装应用程序,您可以制作自己的窗口,以便用户可以在某些应用程序之间进行选择。