Android - Ajout d'au moins une activité avec un filtre d'intention ACTION-VIEW après la mise à jour de la version 23 du SDK

305

Je reçois l' info - bulle suivante dans AndroidManifest.xml :

L'application n'est pas indexable par la recherche Google; envisagez d'ajouter au moins une activité avec un remplisseur d'intention ACTION-VIEW. Voir l'explication du problème pour plus de détails.

Ajoute des liens profonds pour intégrer votre application dans l'index Google, pour obtenir des installations et du trafic vers votre application à partir de la recherche Google.

entrez la description de l'image ici

Quelqu'un peut-il expliquer pourquoi il en est ainsi?

Pratik Butani
la source
Pour le voir en action, voir ici: stackoverflow.com/questions/56631387/…
user1506104

Réponses:

239

De la documentation officielle:

Pour permettre à Google d'explorer le contenu de votre application et permettre aux utilisateurs d'entrer dans votre application à partir des résultats de recherche, vous devez ajouter des filtres d'intention pour les activités pertinentes dans le manifeste de votre application. Ces filtres d'intention permettent un lien profond vers le contenu dans n'importe laquelle de vos activités. Par exemple, l'utilisateur peut cliquer sur un lien profond pour afficher une page dans une application d'achat qui décrit une offre de produit que l'utilisateur recherche.

En utilisant ce lien En activant les liens profonds pour le contenu de l'application, vous verrez comment l'utiliser.

Et en utilisant cette mise en œuvre de l'indexation de votre application, comment la tester.

L'extrait de code XML suivant montre comment vous pouvez spécifier un filtre d'intention dans votre manifeste pour le lien profond.

<activity
    android:name="com.example.android.GizmosActivity"
    android:label="@string/title_gizmos" >
    <intent-filter android:label="@string/filter_title_viewgizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPrefix="/gizmos" />
        <!-- note that the leading "/" is required for pathPrefix-->
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example"
              android:host="gizmos" />

    </intent-filter>
</activity>

Pour tester via Android Debug Bridge

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d <URI> <PACKAGE>

$ adb shell am start
        -W -a android.intent.action.VIEW
        -d "example://gizmos" com.example.android
Mk.Sl.
la source
5
@ schéma user25 est le schéma uri, le schéma peut être http, https, ftp etc
Bhargav
89
bien tout cela pour des applications spécifiques, alors pourquoi afficher cet avertissement? toutes les applications n'en ont pas besoin, toutes les applications ne sont pas des vues Web de certains sites. Google est tellement ennuyeux ..
user924
64
Il peut être supprimé de toute façon avec des outils: ignore = "GoogleAppIndexingWarning"
ecle
12
Curieux que l'avertissement indique que vous avez besoin d'un ACTION-VIEWfiltre d'intention, mais la solution implique action.VIEW. De même, en suivant le lien dans Android Studio, vous accédez à une page Web qui ACTION-VIEWn'apparaît pas. Le moins qu'ils puissent faire avec des avertissements importuns est de vous donner des messages précis et des pages d'aide.
John Perry
7
@ecle Où met-on cette option? / Ça ne fait rien; Je l'ai trouvé: il faut ajouter xmlns:tools="http://schemas.android.com/tools"à la manifestbalise, puis ajouter tools:ignore...à la applicationbalise.
John Perry
190

Vous pouvez supprimer l'avertissement en ajoutant le code ci-dessous à l' <intent-filter>intérieur<activity>

<action android:name="android.intent.action.VIEW" />
Bibin Johny
la source
6
Ce travail est pour moi. Je pense que c'est la réponse que je cherche.
Mahmudur Rahman
13
Cela semble être la bonne solution si vous ne souhaitez pas activer l'indexation des applications. Plutôt que de simplement supprimer l'avertissement via tools:ignore="GoogleAppIndexingWarning". Je l'ai ajouté en tant que frère <action android:name="android.intent.action.MAIN" />dans l'activité principale.
Daniel F
4
mais pourquoi avons-nous besoin aveuglément de cette ligne de code? une raison précise?
Ghanshyam Nayma
15
@GhanshyamNayma l'ajout de cette ligne supprime simplement l'avertissement. Sans le code supplémentaire nécessaire pour ajouter l'indexation réelle de l'application. Pas exactement la meilleure pratique, mais je comprends que les avertissements sont ennuyeux. tools:ignore="GoogleAppIndexingWarning"J'irais simplement à la place, car vous n'ajouterez pas un ACTION_VIEW vide. Cela pourrait ne pas causer de problèmes, mais vous voulez toujours être en sécurité.
Carson J.
8
ah donc C'EST pourquoi tant d'applications aléatoires apparaissent pour ACTION_VIEW maintenant ... eesh
CCJ
135
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app"
tools:ignore="GoogleAppIndexingWarning">

Vous pouvez supprimer l'avertissement en ajoutant xmlns:tools="http://schemas.android.com/tools"et tools:ignore="GoogleAppIndexingWarning"à la <manifest>balise.

Pat Lee
la source
3
Cela fonctionne pour moi et c'est exactement la solution que je cherchais.
Sayan Sil
C'est la solution parfaite.
Rudra
4
Sa solution n'est pas parfaite car elle ne permettra pas à Google d'indexer l'application. En ignorant quelque chose, vous devriez essayer de surmonter ce problème.
Pratik Butani
@PratikButaniAndroidDev L'indexation dans l'AppStore n'est pas prioritaire pour de nombreux développeurs, principalement pour commencer à développer des applications.
Maher Abuthraa
25

L'ajout de ce filtre d'intention à l'une des activités déclarées dans le manifeste de l'application a résolu ce problème pour moi.

<activity
    android:name=".MyActivity"
    android:screenOrientation="portrait"
    android:label="@string/app_name">

    <intent-filter>

       <action android:name="android.intent.action.VIEW" />

    </intent-filter>

</activity>
Oladipo Olasemo
la source
J'ai ceci mais avec intention.action.MAIN et ça n'a pas disparu.
C. Skjerdal
Vous devez vous assurer qu'il est défini sur android.intent.action.VIEW
Oladipo Olasemo
1

cette solution ne fonctionne que si vous souhaitez ignorer cet avertissement

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="GoogleAppIndexingWarning"
    package="com.example.saloononlinesolution">
Benten
la source