| |||||||
Das Thema "Intent für Navigation, wie am sinnvollsten lösen?" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Android Experte Registriert seit: 23.01.2010
Beiträge: 882
Abgegebene Danke: 74
Erhielt 149 Danke für 120 Beiträge
| ich möchte einen Intent abschicken um eine Navigation zu starten ![]() So weit so gut, zwei Möglichkeiten hab ich schon mal: Möglichkeit 1 (geo): Code: String uri1 = "geo:"+ longitude + "," + latitude + "?q=location+adress"; Intent i1 = new Intent(Intent.ACTION_VIEW, Uri.parse(uri1)); startActivity(i1); Code: String uri2 = "google.navigation:q=location+adress"; Intent i2 = new Intent(Intent.ACTION_VIEW,Uri.parse(uri2)); startActivity(i2); ![]() Möglichkeit 2 startet direkt Google Maps im Navigationsmodus Wenn ich Maps nicht installiert hab, gibts bei Möglichkeit 2, so natürlich nen ForceClose, aber das kann man ja verhindern, indem man überprüft ob eine bestimmte Anwendung installiert ist oder ob es eine gibt, die etwas mit dem Intent anfangen kann. (Menüpunkt ausblenden oder per Toast auf GoogleMaps hinweisen) Bestimmte Anwendung überprüfen: über PackageManager? Intent überprüfen: Wie? Bisschen schwierig da die passenden Seiten zu finden, auf denen das erklärt wird, bei "Überprüfen ob Anwendung installiert Android" find ich nicht die Seiten für Entwickler :P Intent wird meistens der umgekehrte Weg beschrieben, d.h. wie man für die eigene Anwendung Intents verarbeitet ... Gibt es eine erheblich bessere Methode um eine Navigation zu ermöglichen oder nicht? (laut Internet, gibt es keinen "festen" Intent bei Android für Navigation ... leider) //EDIT: Für Google Maps hätte ich schon mal nen kleines Snippet gefunden: http://stackoverflow.com/questions/3...oogle-maps-api Aber kurz nachgehakt, soetwas per try-catch zu "überprüfen" ist nicht wirklich sauber gelöst oder? Geändert von kleinerkathe (18.11.2011 um 13:22 Uhr) |
| | |
| | #2 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 14.08.2009
Beiträge: 354
Abgegebene Danke: 23
Erhielt 49 Danke für 43 Beiträge
| Android check for dependent application during installation? - Stack Overflow so schwer war nun google verwenden auch nicht =/ solltest nach englischen begriffen statt deutschen suchen
__________________ http://android.fungamer.net/ |
| | |
| Folgender Benutzer bedankt sich bei MichaelS für diesen Beitrag: | kleinerkathe (21.11.2011) |
| | #3 (permalink) | |
| Android-Hilfe.de Mitglied Modell: Acer Iconia A100 Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
| Zitat:
Das try-catch konstrukt in Java ist exakt für solche Zwecke: Datei vorhanden, Drucker vorhanden, etc. kurz und gut, alles was nicht der direkten Kontrolle des Entwicklers unterliegt.... Der erste Intent ist implizit, der zweite explizit... Im übrigen ist die Frage, warum Du einen Benutzer zwingen willst Google Maps zu installieren. Möglicherweise hat der Benutzer driftige Gründe, ein andere installierte Anwendung zu verwenden als Google Maps... Schließlich willst Du ja in erster Linie, daß deine Anwendung installiert wird. Ich würde deshalb einen impliziten Intent für benutzerfreundlich halten. Sparst Dir dann auch ein paar Zeilen Code | |
| | |
| Folgender Benutzer bedankt sich bei mradlmaier für diesen Beitrag: | kleinerkathe (21.11.2011) |
| | #4 (permalink) |
| Android Experte Registriert seit: 23.01.2010
Beiträge: 882
Abgegebene Danke: 74
Erhielt 149 Danke für 120 Beiträge
|
Zunächst einmal danke euch beiden ![]() Ok, wenn das try-catch Konstrukt genau dazu da ist, dann super Mir persönlich kommts halt eher so vor, als ob try-catch dazu da ist "Ausnahmefälle" abzufangen, die eben normalerweise eher nicht vorkommen sollten ... Habs jetzt mal mit try-catch gelöst ![]() Es gibt, zumindest hab ich dazu nichts gefunden, keinen impliziten Intent für Navigation ![]() Man findet auch keinerlei Angaben ob und wenn ja, wie bspw. CoPilot, Navigon, iGo, etc. auf Intents reagieren können :/ Wieso ich jetzt Google Maps vorschreibe? Würde ich die Anwendung in den Market stellen, dann würde ich es über den impliziten Intent lösen und dem User die Wahl lassen Da die App aber 1. nur zu Demozwecken ist und 2. nur auf meinem Gerät vorgeführt wird, kann ich direkt Google Maps im Navigationsmodus vorführen. Kommt bei Angestellten, die eben ihr iPhone gewöhnt sind besser, wenn direkt die Navigation über 1-Klick gestartet werden kann, als sich durch zig Menüs klicken zu müssen und auch der Punkt "Navigation funktioniert auf Android auch kostenlos" kann man dabei schön erwähnen :P btw. die App wäre ne Firmenapp und die können ihre Geräte ja vorkonfiguriert ausliefern und eben Google Maps überall festsetzen ![]() @MichaelS: Nette Anwendung Hatte die ne zeitlang auf dem Handy und hat mehrere Abende herhalten müssen |
| | |
| | #5 (permalink) | |
| Android-Hilfe.de Mitglied Modell: Acer Iconia A100 Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
| Zitat:
Das verhindert zwar keine Ausnahmesituationen, aber das Programm kann dann solche Situationen eleganter behandeln. Bezüglich impliziter Intents: Grau ist die Theorie, bunt die Praxis. Z.b. habe ich neulich einen Test durchgeführt, welche Browser komplexe Webseiten wie gut darstellen. Unter Android gibts >10 verschiedene Browser. Ergebnis war dass effektiv nur 3 Browser in der Lage waren, komplexe Webseiten korrekt darzustellen (nach Änderung der Browsereinstellungen). Unter Android 3.2 waren es der Google Stock Browser, Dolphin und Opera Mobil (Opera mit tolerablen Einschränkungen) Unter Android 2.3.3 waren es nur der Ninesky Browser. Komplex meint: Javascript, Flash, multiple Windows...etc. Es gibt also durchaus Situationen wo ein expliziter Intent Sinn macht. Leider kann man explizit nur eine einzige Anwendungen aufrufen , und nicht mehrere. Das zweite Problem spricht Du selbst an. Anwendungen, die generell den gleichen Effekt erfüllen, können im Detail natürlich sehr unterschiedlich sein. Ich würde mal sagen, solanges es geht, implizite Intents, und falls es nicht anders geht, explizite Intents | |
| | |
| Folgender Benutzer bedankt sich bei mradlmaier für diesen Beitrag: | kleinerkathe (21.11.2011) |
| | #6 (permalink) |
| Android-Hilfe.de Mitglied Modell: Acer Iconia A100 Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
|
Bezüglich Ausnahmen/Exceptions: Es gibt da ein weitere Unterscheidung: checked Exceptions und unchecked Exceptions Java Practices -> Checked versus unchecked exceptions Kurz: unchecked Exceptions sind auf Fehler in der Programmlogik zurückzuführen, auf die das Programm nicht in sinnvoller weise reagieren kann. checked Exceptions sind die, über die wir gesprochen haben: Fehlende Dateien, Datenbankfehler, fehlende Anwendungen, nicht angesschlossene Drucker, Netzwerk nicht erreichbar, etc. Eine Methode ist verpflichtet, checked Exceptions zu behandeln oder auf dem Stack noch oben weiterzugeben (will heissen an den Aufrufer weiterzugeben, der Aufrufer kann die Exception dann entweder behandeln oder an dessen Aufrufer weitergeben, den ganzen Stack hinauf etc.) Woran erkenne ich eine checked Exception? Die Methode oder Konstruktor verwendet das Keyword "throws": public meineMethode(String s) throws{ // mach irgendwas } Wenn Du ein solche Methode aufrufst,muss das innerhalb von try-catch passieren. Noch was: Es gibt noch ein Keyword "throw new .....Exception() Damit kannst Du ein Exception auslösen z.b. : public void meineMethode(Object o){ if (o == null) { throw new NullPointerException() } } |
| | |
| Folgender Benutzer bedankt sich bei mradlmaier für diesen Beitrag: | kleinerkathe (23.11.2011) |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Sammelthread: Meine 5 sinnvollsten Apps - keine Fragen / Diskussionen | nica | Sonstige Apps & Widgets | 131 | 11.05.2012 12:39 |
| Meine 5 sinnvollsten Apps [Diskussionsthread] | cluster20 | Sonstige Apps & Widgets | 25 | 27.04.2012 09:37 |
| Speicherproblem lösen | Arkelanfall | Root / Hacking / Modding für HTC Desire | 8 | 15.08.2011 13:25 |
| Mehrere OnClick bei Widget für das selbe Intent | Inuyashaxp | Android App Entwicklung | 1 | 31.07.2011 22:08 |
| Wie Verknüpfung mit Dateiendung lösen? | Shakyamuni | Acer Iconia A500 / A501 Forum | 2 | 24.07.2011 00:18 |