使用地址打开默认导航应用

时间:2013-01-16 17:11:18

标签: android

如何启动Intent以打开默认导航应用程序(例如Google Navigation或Google Maps)或让用户有机会在导航应用程序中进行选择。

提前致谢。

2 个答案:

答案 0 :(得分:2)

尝试:

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");

另请参阅:How to check programmatically if an application is installed or not in Android?Android: detect when app is installed,您可以创建自己的窗口,以便用户可以在某个应用程序之间进行选择。

答案 1 :(得分:1)

您必须使用带有ACTION_VIEW和geo数据方案的Intent。

使用geo:latitude,longitude的问题是,Google地图只会在您的位置居中,没有任何针脚或标签。

这非常令人困惑,特别是如果你需要指向一个精确的地方或/并询问方向。

如果您使用查询参数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 apps”意图列表here