/ / Comment faire apparaître mon application dans le sélecteur d'applications? - java, android, pdf, android-intent

Comment faire apparaître mon application dans le sélecteur d'applications? - java, android, pdf, android-intent

Je souhaite annoncer que mon application est capable de visualiser des fichiers PDF afin qu'elle apparaisse dans le sélecteur d'applications lorsqu'un fichier pdf est sélectionné à partir du gestionnaire de fichiers.

Voici à quoi ressemblent mes filtres d'intention

<activity
android:name=".MainActivity"
android:label="@string/app_name">
<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" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>

Chaque fois que j'ouvre un fichier PDF à partir du gestionnaire de fichiers, il sélectionne automatiquement une autre application PDF appelée Polaris Viewer.

J'ai vérifié que Polaris n'était pas l'application par défaut, dans les paramètres de l'application. Il dit pas de paramètres par défaut.

En outre, j'ai téléchargé une application tierce appeléeIntention d'interception. Si je sélectionne un fichier pdf à partir du gestionnaire de fichiers, un sélecteur d’application apparaît, affichant Polaris et Intent Intercept. Si je choisis Intent Intercept, cela me dit que Polaris et mon application (Rollout PdfEditor) correspondent à l'intention. Voici la sortie de Intent Interceptor:

ACTION: android.intent.action.VIEW

DATA: fichier: ///storage/sdcard0/Download/download.pdf TYPE: application / pdf

DRAPEAUX: FLAG_ACTIVITY_FORWARD_RESULT FLAG_ACTIVITY_PREVIOUS_IS_TOP

EXTRA: EXTRA 1: Classe: java.lang.Booléen Clé: aperçu Valeur: false EXTRA 2: Classe: java.lang.String Key: key_filename Valeur: /storage/sdcard0/Download/download.pdf EXTRA 3: Classe: android.net.Uri $ HierarchicalUri Clé: android.intent.extra.STREAM EXTRA 4: Classe: java.lang.Integer Clé: sort_order Valeur: 0

2 activités correspondent à cette intention: Polaris Viewer 4.1 (com.infraware.polarisviewer4 - com.infraware.polarisoffice4.OfficeLauncherActivity) Déploiement PdfEditor (com.example.rolloutpdfeditor - com.example.rolloutpdfeditor.MainActivity)>

Réponses:

4 pour la réponse № 1

Il vous manque <category /> tags de votre IntentFilter! si vous regardez la documentation pour <category /> ça dit:

Remarque: Afin de recevoir des intentions implicites, vous devez inclure le Catégorie CATEGORY_DEFAULT dans le filtre d'intention. Les méthodes startActivity () et startActivityForResult () traitent toutes les intentions comme si ils ont déclaré la catégorie CATEGORY_DEFAULT. Si vous ne le déclarez pas dans votre filtre d'intention, aucune intention implicite ne résoudra votre activité.

Donc, vous devez toujours inclure android.intent.category.DEFAULT comme catégorie pour le IntentFilter travailler du tout. Si vous souhaitez que votre application puisse gérer les liens PDF à partir d'un navigateur ou d'autres applications, vous devez également inclure android.intent.category.BROWSABLE. Vous pouvez trouver de la documentation sur BROWSABLE ici. Ça lit:

CATEGORY_BROWSABLE
L'activité cible se laisse démarrer par un navigateur Web pour afficher les données référencées par un lien, telles qu'une image ou un message électronique.

Essaye ça IntentFilter:

<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:mimeType="application/pdf" />
</intent-filter>

Je pense que vous manquez ces deux catégories.