2011-07-03 5 views
6

を抑制することができます。アプリケーションのアクティビティからGoogleマップへの移行をシームレスにしたいと思います。このダイアログを非表示にして、アンドロイドにマップアクティビティでマップを開くように指示するにはどうすればよいですか?は、Googleマップの意向選択ダイアログに

編集:私はGoogleマップに入ると、特定の場所で公衆の蒸散を使用して方向のプロンプトを開きたいとします。私はGoogle MapsのURLを介してこれを行うことができますが、URLは選択ダイアログを表示します。

答えて

17

私は完璧な解決策を見つけることはできませんでしたが、これは適切な目的地と公共交通機関があらかじめ選択されたマップを少なくとも開きます。その後、すべてのユーザーは方向ボタンを押す必要があります。

また、Googleマップがインストールされているかどうかを確認し、そうであれば使用することをお勧めします。

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=0,0%20(Imaginary%20Place)&dirflg=r")); 
if (isAppInstalled("com.google.android.apps.maps")) { 
    intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
} 
startActivity(intent); 

 

// helper function to check if Maps is installed 
private boolean isAppInstalled(String uri) { 
    PackageManager pm = getApplicationContext().getPackageManager(); 
    boolean app_installed = false; 
    try { 
     pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); 
     app_installed = true; 
    } catch (PackageManager.NameNotFoundException e) { 
     app_installed = false; 
    } 
    return app_installed; 
} 
+0

ストリートビューには注意が必要です。com.google.android.street'パッケージと 'com.google.android.street.Street'アクティビティが必要です。 http://stackoverflow.com/questions/3447723/about-android-google-api-streetviewに記載されているように – tomash

0

まず、選択ダイアログを削除することは必ずしも良いことではないことを指摘します。あなたはできるだけデータを扱う方法をユーザーに選択させたいと思っています。それはAndroidのエコシステムの美しさの一部です。

http://developer.android.com/guide/appendix/g-app-intents.html

の代わりにこのようmaps.google.com/blablablaフォーマットあなたのURIのようなものを渡して:それは言った、それはあなたのアプリケーションを理解せずに判断する公平ではないので...

あなたはgeoプロトコルを使用することができますgeo:0,0?q=my+street+address

例:ここでは

Intent mapLauncherIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=1111+imaginary+dr")); 
+0

私はそれを見て、私は唯一の公共交通機関を利用してGoogleマップの方向性をアップロードする必要があります。私はあなたがGoogleマップのURLを介してこれを行うことができます知っているが、あなたは地理を通じてこれを行うことができますか? – HighLife

+0

フルスペックはこちらhttp://tools.ietf.org/html/draft-mayrhofer-geo-uri-00わかりませんが、私はそれを疑っています。私は別のアイデアを見てきます。 – Computerish

+0

申し訳ありません今はもう見る時間がありません。私はあなたがマップの活動の名前を把握していれば、これを使って起動することができます:http://developer.android.com/reference/android/content/Intent.html#setClassName(java.lang.String、java.lang .String) 'com.google.android.maps'はパッケージ名ですが、私はActivity名がわかりません。次に、適切な追加物を追加する方法を考え出すことです。それをどうするかわからない。 – Computerish

6

は、私がこれまでに見つかったさまざまな方法があります:

1.直接ナビゲーション開始:

を直接Googleのナビゲーションを起動します。この明示的な意思

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("google.navigation:q=my+street+address"); 
startActivity(intent); 

これはナビゲーションを直接開始します(残念なことに、ユーザーに交通手段の選択肢を与えずに)

2.ユーザーは、交通機関を選択してみましょう意味:

これは、Googleのナビゲーションアプリを起動が、ナビゲーションを開始する前に、意味、ユーザが交通機関を選択できます:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps/?daddr=my+street+address"); 
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
startActivity(intent); 

。グーグルマップ上

3.スタート:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("geo:0,0?q=my+street+address"); 
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity"); 
startActivity(intent); 

これは、ユーザーがナビゲーションを開始(および輸送モードを選択する)ことができる場所から、地図を起動します。

いずれの場合も、ユーザーにGoogle Maps/Navigationがインストールされていないケースを処理するには、PackageManagerとqueryIntentActivities()または例外処理を使用する必要があります。

私のアプリでは、うまく動作するメソッド2を使用します。お役に立てれば。

アドオン:アプリがインストールされているかどうかを確認する方法です。私はintent.setClassName()を呼び出す前に "com.google.android.apps.maps"がインストールされているかどうかを確認するためにこれを使います。

public static boolean isAppInstalled(String uri) { 
    PackageManager pm = getContext().getPackageManager(); 
    boolean app_installed = false; 
    try { 
     pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); 
     app_installed = true; 
    } catch (PackageManager.NameNotFoundException e) { 
     app_installed = false; 
    } 
    return app_installed; 
} 
+0

私は、ユーザーのために適切な交通手段を既に選択したいと思います。 – HighLife

関連する問題