Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Funktionsweise von Implicit Intents

Das Thema "Funktionsweise von Implicit Intents" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 01.09.2011, 17:54   #1 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard Funktionsweise von Implicit Intents

Hallo zusammen,

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>
So soll dieser Intent laut dem Buch aufgerufen werden können:

Code:
        Intent i = new Intent("de.androidtest.intent.action.SHOW_PRODUCTS");
        i.putExtra("shoppinglist_id", 1);
        startActivity(i);
Das funktioniert zwar, aber mir fällt auf, dass ich jetzt doch genau den Package-Namen, etc. aus dem Manifest angeben muss. Diese Details kennt ein externer Entwickler doch gar nicht?! (s.o.)

Wie soll das also genau funktionieren? Was müsste ich einem externen Entwickler mitteilen, damit er meine Activity aufrufen kann?

Schönen Gruß,
oetzi
oetzi ist offline   Mit Zitat antworten
Alt 01.09.2011, 19:32   #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
Standard AW: Funktionsweise von Implicit Intents

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
__________________
Meine App: Die Cocktail App für Android™ - jetzt im Market (PRO)
sixi ist offline   Mit Zitat antworten
Alt 01.09.2011, 21:50   #3 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard AW: Funktionsweise von Implicit Intents

Hi sixi,
danke für deine Antwort!
Zitat:
Ein Entwickler muss genau dein "de.androidtest.intent.action.SHOW_PRODUCTS" kennen.
mhh, und warum nimmt man dann nicht direkt explizite Intents? Macht es denn einen Unterschied, ob ich jetzt den Namen des Filters (implizit) oder die Klasse (explizit) bekannt mache. Anscheinend ist mir der tatsächliche Unterschied zwischen den impliziten und expliziten Intens doch noch nicht ganz klar...


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?!
oetzi ist offline   Mit Zitat antworten
Alt 01.09.2011, 22:52   #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
Standard AW: Funktionsweise von Implicit Intents

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.
the_alien ist offline   Mit Zitat antworten
Alt 02.09.2011, 09:23   #5 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard AW: Funktionsweise von Implicit Intents

mhh, ja sehe ich ein :-)

Danke!
oetzi ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

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




Du liest gerade: "Funktionsweise von Implicit Intents" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.