it-swarm.com.de

Absicht, eine Navigationsaktivität zu starten

In meiner Anwendung kann ich die Navigation zum ausgewählten POI starten. Im Grunde möchte ich einen Turn-by-Turn-Navigator aus meiner Anwendung heraus starten. Ich weiß nicht, welcher Navigator (falls vorhanden) installiert ist.

Die Frage ist also, wie man eine Absicht beginnt, indem man dem Benutzer zunächst eine Liste geeigneter Aktivitäten für die Navigation anzeigt und ihn auswählen lässt, welche er verwenden möchte. Es wäre auch schön, einen Weg zu finden, zusätzliche Parameter an ausgewählte Aktivitäten zu übergeben (das klingt für mich nach einem Problem, da verschiedene Navigations-Apps unterschiedliche Namen für ihre Extras verwenden, denke ich).

Falls es nicht klar ist: Ich suche nach einem Weg, um eine Liste der geeigneten Anwendungen für die Navigation mit der Option, eine Störung zu treffen, anzuzeigen.

BEARBEITEN: Hier finden Sie die Implementierung http://datamoil.blogspot.com/2011/04/Android-universal-intent-to-start.html

27
Ilya Saunkin

Die schlechte Nachricht ist, dass es keinen Standard-Intent-URI für die Navigation gibt.

Ja, google.navigation-URIs sind vorhanden, und eine App kann dies unterstützen.

Die beste Lösung, die ich mir vorstellen kann, ist:

  • Suchen Sie explizit nach bekannten Apps
  • Überprüfen Sie implizit, ob Apps google.navigation: und vielleicht geo: (aber Sie erhalten auch Karten-Apps).

Sie können die möglichen impliziten Ziele mit PackageManage.queryIntentActivities auflisten.

21
Phil Lello

Versuchen:

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

Zuerst habe ich in meiner onTap-Methode im Listener der Schaltfläche verwendet:

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

Dann verwenden Sie in manifest einfach:

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

Dadurch wird jede Navigator-App geöffnet, über die Ihr Telefon verfügt, beispielsweise VZ Navigagtor, Google oder was auch immer mit dem Telefon geladen wird. Hat das erste Mal perfekt für mich gearbeitet. Hoffe, das löst dein Problem.

5
Larry Enzer

Ich habe mit diesem Code weitere Vorteile gefunden (nur um verfügbare Navigator-Apps anzuzeigen)

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