Warum ist meine App nicht in der Liste der Apps zum Öffnen der txt-Datei?

8

Ich habe eine Textleser-App, die entworfen wurde, um Absicht von Android-System zu empfangen, wenn ich auf eine Textdatei klicke, um sie zu öffnen. Aber meine App ist nicht auf der Liste, die vom System aufgetaucht ist. Unten sind meine Codes:

Manifestieren

%Vor%

Mein erweiterter BroadcastReceiver

%Vor%

Meine Aktivität, die vom Broadcast-Empfänger geöffnet werden soll

%Vor%

Danke!

    
Jason Ching 22.06.2012, 08:39
quelle

3 Antworten

12

Sie müssen Ihre App mit der Dateierweiterung verknüpfen. Fügen Sie dazu diese zwei Zeilen innerhalb des Intent-Filters hinzu und es ist gut,

zu gehen %Vor%

Und dein Manifest würde so aussehen

%Vor%

<data android:scheme="file" /> = & gt; Dies definiert, dass die Datei lokal sein muss, nicht von http oder sonst

<data android:mimeType="*/*" /> = & gt; Finde einen beliebigen Mime-Typ

<data android:pathPattern=".*\.txt" /> = & gt; Hier geben Sie an, welche Erweiterung angepasst werden soll

Hoffen Sie diese Hilfe

    
Hein 22.06.2012, 09:12
quelle
6

was den Pseudocode von HERO betrifft, funktioniert das effektiv:

ändere <manifest> wie folgt:

%Vor%

drop your broadcast receiver , weil es unnötig ist.

Ändern Sie Ihre BroadcastReceiverTest1Activity-Klasse ( muss NICHT Ihre MAIN-Aktivität sein , siehe BONUS unten):

%Vor%

Sie haben effektiv einen intent listener für TXT-Dateien erstellt , der Ihre App aufruft, wenn der Benutzer sich entscheidet, sie zu verwenden (es sei denn, der Benutzer hat zuvor den Dateityp TXT einer anderen App zugeordnet ...)

Ihre App muss NICHT aktiv sein , um Absichten zu erfassen. Sobald es installiert ist, erkennt das System es als eine der "goto apps" für die bestimmten MIME-Typen und / oder -Erweiterungen (weniger einfach als die Zuordnung nach MIME-Typ), die Sie ausgewählt haben.

BONUS: Sie können eine separate MAIN-Aktivität haben, und wenn Ihr BroadcastReceiver aufgerufen wird, wird in derselben Sandbox ausgeführt wie Ihre Anwendung, ohne sie zu beeinflussen (Sie müssen dies in Ihrem MAIN implementieren) Aktivität onResume Methode).

Sie können die Textdaten in statische Variable (n) [schlampig] lesen ODER Sie können sie in eine SQLite db einfügen, die ist permanent UND sicher , zum Beispiel unabhängig von der App und / oder dem Herunterfahren des Telefons.

Sie könnten die Aktivität selbsterminieren lassen und niemals sogar ein Layout / Fenster hochfeuern - was ziemlich seltsam ist, falls Ihr Benutzer irgendeine Bestätigung haben möchte, dass die txt-Datei von der App korrekt und vollständig verbraucht wurde.

    
tony gil 21.03.2013 18:35
quelle
3

Sie müssen einen ACTIVITY-Empfänger und keinen Broadcast-Empfänger mit den Filterattributen registrieren.

    
Moritz 22.06.2012 08:49
quelle