| |||||||
Das Thema "Funktionsweise von Implicit Intents" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Junior Mitglied Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
| ich arbeite mich gerade in die Android Entwicklung ein und hänge gerade an den Implicit Intents. Mein bisheriges Verständnis sieht so aus: - Da andere Entwickler nicht die Klassennamen der Ziel-Activity kennen, müssen überhaupt implicit Intents verwendet werden. Intern kann ich ja einfach explicit Intents verwenden indem ich die Activity über den Klassennamen aufrufe. - Eine Activity bietet über einen Intent-Filter dann überhaupt erstmal die Möglichkeit an von außen aufgerufen zu werden Aber wie genau funktionert es, dass eine Activity merkt, dass sie gemeint ist? Folgendes Beispiel habe ich gerade aus einem Android Buch abgeschrieben und ausprobiert: Manifest: Code: <activity android:name=".ShowProductsOfShoppingList"
android:label="@string/app_name">
<intent-filter>
<action android:name="de.androidtest.intent.action.SHOW_PRODUCTS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity> Code: Intent i = new Intent("de.androidtest.intent.action.SHOW_PRODUCTS");
i.putExtra("shoppinglist_id", 1);
startActivity(i); Wie soll das also genau funktionieren? Was müsste ich einem externen Entwickler mitteilen, damit er meine Activity aufrufen kann? Schönen Gruß, oetzi |
| | |
| | #2 (permalink) |
| Erfahrener Benutzer Modell: G1 DevPhone / SGS2 / SGT10.1v Registriert seit: 20.01.2009
Beiträge: 238
Abgegebene Danke: 7
Erhielt 50 Danke für 47 Beiträge
|
Ein Entwickler muss genau dein "de.androidtest.intent.action.SHOW_PRODUCTS" kennen. Diese Intent-Namen kennst du auch von anderen - bzw. die Standard-Intents wie z.B. "android.intent.action.VIEW" - das ist der Name, der hinter der Konstanten "Intent.ACTION_VIEW" steht. Zusätzlich zu dem Namen kannst du auch nach dem Inhalt (also der URI) Filtern - z.B. kannst du einen ACTION_VIEW Intent schreiben, der auf alles hört was mit ht*p://w*w.youtube.com anfängt - genau so macht es die YouTube-App von Google und fragt dich bei Youtube-Links. Dann wird der Benutzer von dem "Intent-Chooser" gefragt, mit welchem Programm der Intent behandelt werden soll - mit deinem Browser oder mit "YouTube". edit: Und in deinem Beispiel müsstest du natürlich auch die Parameter (shoppinglist_id) veröffentlichen, die man mitteilen kann - und in der Activity, die auf den Intent horcht behandeln wenn dieser nicht angegeben wird. Die Intents von Google-Programmen findest du hier: http://developer.android.com/guide/a...p-intents.html |
| | |
| | #3 (permalink) | |
| Junior Mitglied Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
|
Hi sixi, danke für deine Antwort! Zitat:
Hab mir grad mal die verlinkte Seite angeguckt. Sehe ich das richtig? Der Intent Name VIEW (bzw. "android.intent.action.VIEW") ist für verschiedene Zwecke zu nutzen und es wird nur anhand der übergebenen Parameter entschieden, ob jetzt der Browser, googleMaps oder googleStreetView aufgerufen wird? mhh, auch hier sehe ich irgendwie denn Sinn noch nicht. Ich weiß doch in meinem Programm, ob ich einfach eine normale Internetadresse habe, die über den Browser geöffnet werden soll, oder ob ich gerade Koordinaten habe, die mir bei googleMaps angezeigt werden sollen. Oder was für Vorteile bietet es, dass man das so "schwammig" konstruiert? mhh okay, mir fällt da gerade was ein. Ein ähnliches Beispiel, wie dein youtube Beispiel. Als ich auf meinem SGS einen alternativen PDF Reader installiert habe, kam danach jedes Mal dieser "Intent-Chooser", wenn ich im Dateisystem auf ein PDF geklickt habe. Sehe ich das richtig, dass in dem Moment wo ich auf das PDF klicke vom System ein Intent Aufruf statt findet in die Richtung: "Hellas, gibt es hier wen, der mir ein PDF öffnen kann?" Und wenn dann der Intent Filter von dem alternativ PDF-Reader genauso gestaltet ist wie der systemeigene, kommt der Intent bei beiden an?! | |
| | |
| | #4 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Naja, wenn du eine 2. Galerie hast fragt er dich mit welcher er das Bild öffnen soll. Oder mit welchem Video Player er das Video wiedergeben soll. Wäre der Weg hier vorgegeben wäre Android deutlich schlechter anpassbar. Zum PDF Beispiel :genau so funktioniert das
__________________ Follow/Add/Circle/Whatever me on Google+ Solitaire HD, ein Solitaire optimiert für Honeycomb. |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Intents mit Base64 Bytearray | bloddY | Android App Entwicklung | 1 | 01.08.2011 13:14 |
| Telefon App und seine Funktionsweise | devzero | Kommunikation | 0 | 17.02.2011 12:49 |
| ImageView mit mehreren Intents belegen? | tobbbbi | Android App Entwicklung | 8 | 07.01.2011 12:27 |
| (Anfänger)probleme mit Intents? | timefrenzy | Android App Entwicklung | 1 | 25.03.2010 18:06 |
| Intents Plattform | friedger | Android App Entwicklung | 5 | 15.01.2009 22:38 |