Napisałem poniższy filtr intencji, aby otworzyć plik tekstowy za pomocą mojej aplikacji. Wydaje się, że działa, ale tylko czasami. Na przykład, jeśli wyślę plik tekstowy w wiadomości e-mail, jeśli wybiorę opcję Otwórz z poczty, moja aplikacja nie zostanie wyświetlona. Jeśli najpierw wybiorę Zapisz, a następnie otwórz, moja aplikacja zostanie wyświetlona. Podobne doświadczenie z wrzutnią, jeśli spróbuję otworzyć z wrzutni, moja aplikacja nie zostanie wyświetlona jako zdolna do otwarcia, ale jeśli wyeksportuję z wrzutni do sd i użyję menedżera plików, aby ją otworzyć, moja aplikacja zostanie wyświetlona i Pracuje.

<intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
  </intent-filter>  
  <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="http" android:host="*" android:pathPattern=".*\\.txt" />
      <data android:scheme="https" android:host="*" android:pathPattern=".*\\.txt" />
      <!--  <data android:scheme="content" android:host="*" android:pathPattern=".*\\.txt" /> -->
  <data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.txt" />
   </intent-filter>
1
user1013448 30 sierpień 2012, 16:52

2 odpowiedzi

Najlepsza odpowiedź

Dropbox i aplikacja Poczta prawdopodobnie korzystają z dostawców treści i nie pasują do pathPattern. Zazwyczaj dostawcy zawartości nie zawierają rozszerzenia pliku, ale używają typu MIME do wskazania, jaki typ pliku jest otwierany. Jeśli zamierzasz otworzyć dowolny plik text/plain, a niekoniecznie tylko te, które mają rozszerzenie .txt, lepiej całkowicie wyłączyć pathPattern.

<intent-filter>
      <data android:mimeType="text/plain" />
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
1
nEx.Software 30 sierpień 2012, 18:55

Prawdopodobnie dlatego, że aplikacja e-mail i Dropbox używają innego schematu zamiast pliku, http lub https. Spróbuj użyć tylko atrybutu typu mime.

EDYTUJ: Według forów dropbox:

FYI, najłatwiejszym sposobem, aby to teraz zrobić, jest otwarcie aplikacji z Dropbox poprzez zarejestrowanie się w VIEW z prawidłowym typem MIME. Następnie wszystko jest przekazywane prawidłowo, a zapisywanie i oglądanie zmian w plikach do ponownego przesłania jest obsługiwane dobrze.

Musisz tylko określić typ MIME i nic więcej. Nie próbowałem tego, ale prawdopodobnie działa to również w przypadku aplikacji pocztowej, o ile typy MIME są zgodne.

Oto link, jeśli jesteś zainteresowany:

https://forums.dropbox.com/topic.php?id=26035#post-162963

0
Adam Monos 30 sierpień 2012, 18:43