私のアプリケーションには、選択したPOIへのナビゲーションを開始するオプションがあります。基本的には、アプリケーションからターンバイターンのナビゲーターを起動することです。問題は、インストールされているナビゲーター(存在する場合)がわからないことです。
だから、問題は、最初にユーザーにナビゲーションするための適切なアクティビティのリストを表示し、使用したいものをユーザーに選択させることにより、インテントを開始する方法ですか?また、選択したアクティビティに追加のパラメーターを渡す方法を見つけるといいでしょう(これは、ナビゲーションアプリごとに別の名前を使用するため、問題のように思えます)。
明確でない場合:1つのデフォルトにするオプションを使用して、ナビゲーションに適したアプリケーションのリストを表示する方法を探しています。
編集:ここで実装を見つけます http://datamoil.blogspot.com/2011/04/Android-universal-intent-to-start.html
悪いニュースは、ナビゲーション用の標準のIntent URIがないことです。
はい、google.navigation URIが存在し、アプリはそれをサポートすることを選択できます。
私が考えることができる最良の解決策は次のとおりです。
PackageManage.queryIntentActivities を使用して、潜在的な暗黙のターゲットを列挙できます。
試してください:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("google.navigation:q=New+York+NY"));
startActivity(intent);
最初に、ボタンのリスナー内の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、または携帯電話に搭載されているものなど、携帯電話に搭載されているナビゲーターアプリが開きます。初めて完璧に働きました。これで問題が解決することを願っています。
このコードを使用すると、より多くの利点が見つかりました(利用可能なナビゲーターアプリを表示するためだけに)
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...
}