Android - Hinzufügen mindestens einer Aktivität mit einem ACTION-VIEW-Intent-Filter nach dem Aktualisieren von SDK Version 23

305

Ich erhalte den folgenden Tooltipp in AndroidManifest.xml :

Die App kann von der Google-Suche nicht indiziert werden. Erwägen Sie, mindestens eine Aktivität mit einem ACTION-VIEW-Intent-Filler hinzuzufügen. Weitere Informationen finden Sie in der Erläuterung der Ausgabe.

Fügt Deep Links hinzu, um Ihre App in den Google-Index aufzunehmen und Installationen und Zugriffe von der Google-Suche auf Ihre App zu erhalten.

Geben Sie hier die Bildbeschreibung ein

Kann jemand erklären, warum es so ist?

Pratik Butani
quelle
Um es in Aktion zu sehen, sehen Sie hier: stackoverflow.com/questions/56631387/…
user1506104

Antworten:

239

Aus der offiziellen Dokumentation:

Damit Google Ihren App-Inhalt crawlen und Nutzer Ihre App aus den Suchergebnissen eingeben können, müssen Sie Absichtsfilter für die relevanten Aktivitäten in Ihrem App-Manifest hinzufügen. Diese Absichtsfilter ermöglichen eine tiefe Verknüpfung mit dem Inhalt Ihrer Aktivitäten. Beispielsweise kann der Benutzer auf einen Deep Link klicken, um eine Seite in einer Einkaufs-App anzuzeigen, die ein Produktangebot beschreibt, nach dem der Benutzer sucht.

Verwenden dieses Links Wenn Sie Deep Links für App-Inhalte aktivieren, erfahren Sie, wie Sie diese verwenden.

Und mit dieser Test Your App Indexing-Implementierung können Sie sie testen.

Das folgende XML-Snippet zeigt, wie Sie in Ihrem Manifest einen Absichtsfilter für Deep Linking angeben können.

<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>

Zum Testen über 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.
quelle
5
@ user25 Schema ist das Uri-Schema, Schema kann http, https, ftp usw. sein
Bhargav
89
Nun, all dies für bestimmte Apps. Warum dann diese Warnung anzeigen? Nicht alle Apps benötigen dies, nicht alle Apps sind Webansichten einiger Websites. Google ist so nervig ..
user924
64
Es kann sowieso mit Tools unterdrückt werden: ignore = "GoogleAppIndexingWarning"
ecle
12
Neugierig, dass die Warnung besagt, dass Sie einen ACTION-VIEWAbsichtsfilter benötigen , aber die Lösung beinhaltet action.VIEW. Wenn Sie dem Link in Android Studio folgen, gelangen Sie ebenfalls zu einer Webseite, ACTION-VIEWdie nicht angezeigt wird. Das Mindeste, was sie mit aufdringlichen Warnungen tun können, ist, Ihnen genaue Nachrichten und Hilfeseiten zu geben.
John Perry
7
@ecle Wo setzt man diese Option ein? / Keine Ursache; Ich habe es gefunden: Man muss xmlns:tools="http://schemas.android.com/tools"dem manifestTag hinzufügen tools:ignore...und dann dem applicationTag hinzufügen .
John Perry
190

Sie können , indem Sie den folgenden Code in die Warnung entfernen <intent-filter>innen<activity>

<action android:name="android.intent.action.VIEW" />
Bibin Johny
quelle
6
Diese Arbeit ist für mich. Ich denke, das ist die Antwort, nach der ich suche.
Mahmudur Rahman
13
Dies scheint die richtige Lösung zu sein, wenn Sie die App-Indizierung nicht aktivieren möchten. Anstatt nur die Warnung über zu entfernen tools:ignore="GoogleAppIndexingWarning". Ich habe es als Geschwister <action android:name="android.intent.action.MAIN" />in die Hauptaktivität aufgenommen.
Daniel F
4
aber warum brauchen wir diese Zeile im Code blind? einen bestimmten Grund?
Ghanshyam Nayma
15
@GhanshyamNayma, das diese Zeile hinzufügt, entfernt nur die Warnung. Ohne den zusätzlichen Code, der zum Hinzufügen der eigentlichen App-Indizierung erforderlich ist. Nicht gerade die beste Vorgehensweise, aber ich verstehe, dass Warnungen ärgerlich sind. Ich würde tools:ignore="GoogleAppIndexingWarning"stattdessen einfach mitgehen, weil Sie dann keine leere ACTION_VIEW hinzufügen. Es kann keine Probleme verursachen, aber Sie möchten immer sicher sein.
Carson J.
8
ah so DIESES ist, warum so viele zufällige Apps für ACTION_VIEW jetzt angezeigt werden ... 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">

Sie können die Warnung entfernen, indem Sie xmlns:tools="http://schemas.android.com/tools"und tools:ignore="GoogleAppIndexingWarning"zum <manifest>Tag hinzufügen .

Pat Lee
quelle
3
Das funktioniert bei mir und genau die Lösung, nach der ich gesucht habe.
Sayan Sil
Dies ist die perfekte Lösung.
Rudra
4
Es ist keine perfekte Lösung, da Google die App nicht indizieren kann. Wenn Sie etwas ignorieren, sollten Sie versuchen, dieses Problem zu lösen.
Pratik Butani
@PratikButaniAndroidDev Indizierung im AppStore hat für viele Entwickler keine Priorität, hauptsächlich als Beginn der App-Entwicklung.
Maher Abuthraa
25

Das Hinzufügen dieses Absichtsfilters zu einer der im App-Manifest deklarierten Aktivitäten hat dies für mich behoben.

<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
quelle
Ich habe dies aber mit Absicht.Action.MAIN und es ging nicht weg.
C. Skjerdal
Sie müssen sicherstellen, dass es auf android.intent.action.VIEW
Oladipo Olasemo
1

Diese Lösung funktioniert nur, wenn Sie diese Warnung ignorieren möchten

<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
quelle