2016-04-27 16 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年是愚蠢的) –

相關問題