2016-04-27 14 views
4

我有一个应用程序,让用户点击地址从他的当前位置开始导航。现在它打开Waze。但现在我想让用户在地图,wa and和其他导航应用程序之间进行选择,并设置默认值。如何提示用户选择默认的导航应用程序

我试着使用:

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

它让我选择,但它不能启动导航,只需在地图上的Classique点。我想要的是打开任何应用程序的导航。 在地图是:

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

在做intent.setPackage("com.google.android.apps.maps");您正在强制使用Google地图。从the documentation

公众意向setPackage(字符串的packageName)

(通常可选)设置限制了这种意图将解析到组件明确的应用程序包的名称。如果保留为默认值null,则将考虑所有应用程序中的所有组件。如果非null,则Intent只能匹配给定应用程序包中的组件。

只是将其删除:

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia"); 
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); 
startActivity(mapIntent); 

UPDATE:

看来,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); 
+0

我已经试过没有,它也是一样,直接打开谷歌地图。 –

+0

你安装了哪些导航应用程序?尝试删除Google地图的“默认启动”选项。前往设置 - >应用程序 - >地图 - >清除默认 – antonio

+0

我有,地图,Waze,iCoyote,3在法国这里使用的主要应用程序。清除默认值不会改变。也许其他应用程序只是没有抓住这个意图“google.navigation”? (这在2016年是愚蠢的) –

相关问题