Benutzerdefinierte Aktionen, die implizite Absichten zwischen Anwendungen verwenden

8

Ich habe versucht, zwei Aktivitäten in zwei separaten Anwendungen zu erhalten, um mit einer benutzerdefinierten Aktion und einer impliziten Absicht zu kommunizieren.

Die erste Anwendung (Server) hat das folgende Manifest:

%Vor%

Die zweite Anwendung erstellt eine Absicht wie folgt:

%Vor%

Sein Manifest ist normal. Wenn ich versuche, die Absicht in der Client-Anwendung zu senden, bekomme ich jedoch eine Ausnahme für die Aktivität nicht gefunden:

%Vor%

Was verursacht, dass Android die erklärte Aktivität in der zweiten Anwendung nicht erkennt? Danke.

    
skoke 06.09.2012, 09:52
quelle

2 Antworten

6

Nachdem ich viel gesucht habe, habe ich folgendes gefunden:

Wenn Sie einen integrierten Aktionstyp verwenden und ein Datenfeld oder anfügen, wenn Sie einen benutzerdefinierten Aktionstyp ohne Datenfeld verwenden , ein intent-filter ohne ein data Element ist in Ordnung.

Wenn Sie jedoch eine benutzerdefinierte Aktion definieren, die und ein Datenfeld enthält, müssen Sie mime-type für den angehängten URI manuell festlegen. Die Android-Dokumentation beansprucht das

  

Normalerweise wird der Typ aus den Daten selbst abgeleitet. Indem Sie dieses Attribut setzen, deaktivieren Sie diese Auswertung und erzwingen einen expliziten Typ.

Aber das ist nicht der Fall. Als ich einen file:// URI eingegeben habe, der in .txt endete, hat Android ihm ein null mime-type zugewiesen, so dass es nicht mit any intent-filter übereinstimmt, auch nicht mit einem data und */* mime-type . Ich musste den Typ der Absicht manuell mit setDataAndType() festlegen.

Kurz gesagt: Sie müssen das mime-type einer Absicht manuell definieren, wenn Sie eine benutzerdefinierte Aktion mit Daten verwenden.

    
skoke 07.09.2012 10:01
quelle
0

Erstens Sie können nur angeben, zu welcher Anwendung es gehen soll; Du kannst nicht angeben, zu welcher Avtivität es gehen soll; Ich habe bereits geantwortet, wie ich zu einer anderen App navigieren kann hier ; Danach geht Ihre Kontrolle an die andere App; Du musst damit umgehen

    
Manoj Kumar 06.09.2012 10:06
quelle