2010-11-10 4 views
4

Cette question a été posée [plusieurs fois] auparavant, mais je n'ai pas vu de réponses définitives, ni d'exemples de code qui fonctionne réellement.Corriger la configuration du filtre d'intention Android pour associer un type de fichier à une activité?

Je voudrais associer une activité à un type de fichier particulier.

Pour la discussion, supposons que je souhaite que mon activité soit associée à des fichiers PDF.

Voici ce que j'ai actuellement. J'ai expérimenté de nombreuses valeurs et combinaisons de valeurs dans le filtre d'intention, mais je n'ai pas encore commencé mon activité lorsqu'un PDF est sélectionné.

 
<activity name="com.mycompany.MyActivity"> 
    <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="application/pdf" /> 
     <data android:pathPattern="\\*\\.pdf" /> 
     <data android:host="*" /> 
    </intent-filter> 
</activity> 

Est-ce que quelqu'un sait comment réellement faire ce travail?

Répondre

6

Avez-vous essayé avec cette version simple:

<activity name="com.mycompany.MyActivity"> 
    <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="application/pdf" /> 
    </intent-filter> 
</activity> 
+0

J'ai essayé tant de combinaisons, je ne peux pas être sûr, mais Je pensais que j'avais. Cependant, en utilisant la version que vous avez fournie (avec l'ajout de l'action.SEND) cela fonctionne! – dazhu

+0

btw ... Merci! – dazhu

+3

Donc s'il vous plaît accepter la réponse (la coche sur la gauche, ci-dessous les votes) ;-) –

0

Votre pathPattern est définitivement faux et vous limitez trop bien avec le type MIME.

les opérations suivantes:

<activity name="com.mycompany.MyActivity"> 
    <intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="http" /> 
    <data android:host="*" /> 
    <data android:pathPattern=".*\\.pdf" /> 
    </intent-filter> 
    <intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="http" /> 
    <data android:host="*" /> 
    <data android:mimeType="application/pdf" /> 
    </intent-filter> 
    <intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:scheme="file" /> 
    <data android:host="*" /> 
    <data android:pathPattern=".*\\.pdf" /> 
    </intent-filter> 
</activity> 
+0

Je pensais que l'hôte = "*" pourrait être omis, mais il a commencé à être trop large. –

0

Pour ouvrir les fichiers PDF locaux et distants que je ferais:

  <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="application/pdf" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="file" android:host="*" android:pathPattern=".*\\.pdf" /> 
     </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=".*\\.pdf" /> 
      <data android:scheme="https" android:host="*" android:pathPattern=".*\\.pdf" /> 
     </intent-filter> 
Questions connexes