我有一个应用程序让用户点击地址从当前位置开始导航。现在它打开Waze。但现在我想让用户在地图,waze和其他安装的导航应用程序之间进行选择并制作一个默认设置。
我尝试使用:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format(Locale.US, "geo:%.8f,%.8f", latitude, longitude)));
startActivity(Intent.createChooser(intent, "Select an application"));
它让我选择,但它不会启动导航,只是地图上的一个经典点。我想要的是打开任何应用程序的导航。 对于地图它是:
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
但它不会让用户使用哪个应用程序。
那么有没有办法自动完成?如果没有,可以让用户选择什么?
答案 0 :(得分:0)
执行intent.setPackage("com.google.android.apps.maps");
您强制使用Google地图。来自the documentation:
public Intent setPackage(String packageName)
(通常是可选的)设置显式应用程序包名称,以限制此Intent将解析的组件。如果保留默认值null,则将考虑所有应用程序中的所有组件。如果为非null,则Intent只能匹配给定应用程序包中的组件。
删除它:
Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
startActivity(mapIntent);
<强>更新强>
似乎Waze响应http://maps.google.com
意图,因此您可以通过这种方式实现所需的功能(对iCoyote不起作用):
Uri gmmIntentUri = Uri.parse("http://maps.google.com/maps?q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
startActivity(mapIntent);