Verknüpfung bestimmter Dateierweiterung zu meiner Android-Anwendung

Ich habe Schwierigkeiten, meine benutzerdefinierte Dateierweiterung an meine Android-Anwendung zu verteilen, die ich entwickle. In meiner Android Manifest Datei habe ich folgendes:

<data android:scheme="file" android:mimeType="*/*" android:pathPattern="*.*\\.myFileExt" /> <data android:scheme="content" android:mimeType="*/*" android:pathPattern="*.*\\.myFileExt" /> 

Es funktioniert irgendwie. Lassen Sie mich erklären. Ich habe eine Datei in meinem Google Mail (schick eine Datei an mich selbst), die die richtige Erweiterung hat, also wenn ich es aus meinem Handy-Browser herunterladen und klicken Sie auf öffnen, öffnet es meine Anwendung richtig, aber wenn ich erforsche, dass Dateipfad; Wo die Datei befindet, und versuchen, es zu öffnen, mein Telefon sagt keine Anwendung kann diese Datei-Typ zu öffnen.

Irgendwelche Ideen, wie man dieses Problem lösen kann?

  • Was sind die .db-shm- und .db-wal-Erweiterungen in Sqlite-Datenbanken?
  • So suchen Sie nach Dateien auf dem Handy sdcard oder wo wo
  • 3 Solutions collect form web for “Verknüpfung bestimmter Dateierweiterung zu meiner Android-Anwendung”

    Einige Fälle sind irgendwie knifflig, ich habe mich entschieden:

      <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="file" /> <data android:mimeType="*/*" /> <data android:pathPattern=".*\\.myFileExt" /> <data android:host="*" /> </intent-filter> 

    Und das scheitert manchmal daran, dass manchmal nur ein globaler Mime-Typ (in meinem Fall XML) verwendet wird:

      <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:mimeType="text/xml" /> </intent-filter> 

    Ihr Filter-Snippet ist zu kurz, um es auf Fehler zu überprüfen. Du hättest den ganzen <intent-filter> enthalten müssen.

    Ein Fehler ist in deinem Pfad. Es kann nicht mit einem Sternchen beginnen, zB *.* Ist falsch Diese crappy Android-Glob-Matching hier Griffe . Und .* und x* nur (die letzte stimmt "", "x" … und "xxxxxx", …)

    Außerdem fehlt das Attribut "host" PathPattern ist sinnlos, wenn Schema oder Host fehlen.

    Nachdem ich ein paar Stunden in diesem Thema verbracht habe, kam ich endlich mit dieser Lösung (AAA ist die Dateierweiterung):

     <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> <data android:scheme="file" /> <data android:host="*" /> <data android:port="*" /> <data android:pathPattern=".*..*..*..*..*.AAA" /> <data android:pathPattern=".*..*..*..*.AAA" /> <data android:pathPattern=".*..*..*.AAA" /> <data android:pathPattern=".*..*.AAA" /> <data android:pathPattern=".*.AAA" /> </intent-filter> 

    Der Grund für all jene pathPattern ist, dass, wenn Sie einen Punkt in Ihrem Dateinamen haben, die allgemeine Form von .*.AAA pathPattern nicht mit dem Dateinamen überein.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.