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?


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

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

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 .


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>

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">
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.