web-dev-qa-db-ja.com

ナビゲーションアクティビティを開始する意図

私のアプリケーションには、選択したPOIへのナビゲーションを開始するオプションがあります。基本的には、アプリケーションからターンバイターンのナビゲーターを起動することです。問題は、インストールされているナビゲーター(存在する場合)がわからないことです。

だから、問題は、最初にユーザーにナビゲーションするための適切なアクティビティのリストを表示し、使用したいものをユーザーに選択させることにより、インテントを開始する方法ですか?また、選択したアクティビティに追加のパラメーターを渡す方法を見つけるといいでしょう(これは、ナビゲーションアプリごとに別の名前を使用するため、問題のように思えます)。

明確でない場合:1つのデフォルトにするオプションを使用して、ナビゲーションに適したアプリケーションのリストを表示する方法を探しています。

編集:ここで実装を見つけます http://datamoil.blogspot.com/2011/04/Android-universal-intent-to-start.html

27

悪いニュースは、ナビゲーション用の標準のIntent URIがないことです。

はい、google.navigation URIが存在し、アプリはそれをサポートすることを選択できます。

私が考えることができる最良の解決策は次のとおりです。

  • 既知のアプリを明示的に確認する
  • Google.navigationをフックするアプリを暗黙的に確認します:およびperhapsgeo:(ただし、マップアプリも取得します)

PackageManage.queryIntentActivities を使用して、潜在的な暗黙のターゲットを列挙できます。

21
Phil Lello

試してください:

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("google.navigation:q=New+York+NY")); 
startActivity(intent);
12
pumpkee

最初に、ボタンのリスナー内のonTapメソッドで使用しました。

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=New+York+NY")); 
mContext.startActivity(i);

次に、マニフェストで単純に使用します:

<activity Android:name=".LaunchGPS" Android:screenOrientation="portrait">
  <intent-filter>       
    <action Android:name="Android.intent.action.SEND" />
    <category Android:name="Android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

これにより、VZ Navigagtor、Google、または携帯電話に搭載されているものなど、携帯電話に搭載されているナビゲーターアプリが開きます。初めて完璧に働きました。これで問題が解決することを願っています。

5
Larry Enzer

このコードを使用すると、より多くの利点が見つかりました(利用可能なナビゲーターアプリを表示するためだけに)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:"));
if (intent.resolveActivity(getActivity().getPackageManager()) != null)   {
    startActivityForResult(Intent.createChooser(intent, "Continues with:", CHOOSE_NAVIGATOR_ID);
} else {
   // Handle failure...
}
0
Lorenzo