web-dev-qa-db-fra.com

Intention de démarrer une activité de navigation

Dans mon application, j'ai la possibilité de démarrer la navigation vers les POI sélectionnés. En gros, ce que je veux, c'est lancer un navigateur étape par étape à partir de mon application. Le problème est que je ne sais pas quel navigateur (le cas échéant) est installé.

La question est donc de savoir comment créer une intention en affichant d’abord une liste d’activités de navigation appropriées pour l’utilisateur, lui permettant de choisir celle qu’il souhaite utiliser. Ce serait également agréable de trouver un moyen de passer des paramètres supplémentaires à l'activité sélectionnée (cela me semble être un problème, car différentes applications de navigation utilisent des noms différents pour leurs suppléments, je suppose).

Au cas où ce ne serait pas clair: je cherche un moyen d’AFFICHER UNE LISTE D’APPLICATIONS APPROPRIÉES POUR LA NAVIGATION AVEC UNE OPTION DE FAIRE UN DÉFAUT.

EDIT: Retrouvez ici la mise en oeuvre http://datamoil.blogspot.com/2011/04/Android-universal-intent-to-start.html

27
Ilya Saunkin

La mauvaise nouvelle est qu'il n'y a pas d'URI d'intention standard pour la navigation.

Oui, les URI de google.navigation existent et une application peut choisir de le prendre en charge.

La meilleure solution à laquelle je puisse penser est de:

  • Vérifier explicitement les applications connues
  • Vérifiez implicitement que les applications accrochent google.navigation: et peut-être geo:

Vous pouvez énumérer les cibles implicites possibles à l’aide de PackageManage.queryIntentActivities

21
Phil Lello

Essayer:

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

J'ai d'abord utilisé ma méthode onTap dans l'écouteur du bouton:

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

Dans le manifeste, utilisez simplement:

<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>

Cela ouvrira toutes les applications Navigator de votre téléphone, telles que VZ Navigagtor, Google ou tout ce dont le téléphone est chargé. Travaillé pour moi la première fois parfaitement. J'espère que ceci résoudra votre problème.

5
Larry Enzer

J'ai trouvé plus d'avantages en utilisant ce code (juste pour montrer les applications de navigation disponibles)

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