Android-更新SDK版本23后,至少添加一个带有ACTION-VIEW Intent过滤器的Activity


305

我在AndroidManifest.xml中得到以下工具提示:

该应用无法通过Google搜索建立索引;考虑添加至少一个带有ACTION-VIEW意向填充器的Activity。有关更多详细信息,请参见问题说明。

添加深层链接,使您的应用程序进入Google索引,从Google搜索获取安装量和访问量。

在此处输入图片说明

谁能解释为什么会这样?


要查看实际效果,请参见此处:stackoverflow.com/questions/56631387/…–
user1506104

Answers:


239

根据官方文件:

为了使Google能够抓取您的应用内容并允许用户从搜索结果中进入您的应用,您必须在应用清单中添加针对相关活动的意图过滤器。这些意图过滤器允许您在任何活动中深度链接到内容。例如,用户可能单击深层链接以查看购物应用程序中的页面,该页面描述了用户正在搜索的产品。

使用此链接为应用程序内容启用深层链接,您将了解如何使用它。

并使用此测试测试您的App索引实现

以下XML代码段显示了如何在清单中指定用于深度链接的意图过滤器。

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

通过Android调试桥进行测试

$ 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方案是uri方案,方案可以是http,https,ftp等
Bhargav

89
那么所有这些都针对特定的应用程序,那么为什么要显示该警告?并非所有应用程序都需要此功能,并非所有应用程序都是某些网站的网络视图。谷歌是如此恼人..
user924

64
无论如何,可以使用tools:ignore =“ GoogleAppIndexingWarning”将其抑制
ecle

12
奇怪的是,警告提示您需要一个ACTION-VIEW意图过滤器,但解决方案涉及action.VIEW。同样,单击Android Studio中的链接会将您带到ACTION-VIEW未显示的网页。他们对干扰性警告的最低要求是为您提供准确的消息和帮助页面。
约翰·佩里

7
@ecle在哪里可以放置此选项?/ 没关系; 我发现了:必须先添加xmlns:tools="http://schemas.android.com/tools"manifest标签,然后再添tools:ignore...加到application标签。
约翰·佩里

190

您可以通过在<intent-filter>内部添加以下代码来删除警告<activity>

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

6
这项工作是给我的。我认为这是我正在寻找的答案。
Mahmudur Ra​​hman

13
如果您不想启用应用程序索引,这似乎是正确的解决方案。而不是仅通过删除警告tools:ignore="GoogleAppIndexingWarning"。我将其添加为<action android:name="android.intent.action.MAIN" />主要活动中的同级对象。
丹尼尔·F

4
但是为什么我们盲目的在代码中需要这一行呢?有什么具体原因吗?
Ghanshyam Nayma

15
@GhanshyamNayma添加此行只是删除警告。无需添加实际应用程序索引所需的额外代码。并非最佳做法,但我知道警告很烦人。我会选择使用它,tools:ignore="GoogleAppIndexingWarning"因为那样您将不会添加空的ACTION_VIEW。它可能不会引起任何问题,但是您始终希望安全。
卡森·

8
啊,这就是为什么现在有如此多的随机应用出现在ACTION_VIEW中的原因……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">

您可以通过在标签上添加xmlns:tools="http://schemas.android.com/tools"tools:ignore="GoogleAppIndexingWarning"来删除警告<manifest>


3
这对我有效,也正是我在寻找的解决方案。
Sayan Sil

这是完美的解决方案。
Rudra

4
它不是完美的解决方案,因为它不允许Google将应用编入索引。通过忽略某些内容,您应该尝试解决该问题。
Pratik Butani

AppStore中的@PratikButaniAndroidDev索引并不是许多开发人员优先考虑的事情,主要是因为开始开发应用程序..
Maher Abuthraa

25

将这个意图过滤器添加到app清单中声明的​​活动之一后,为我解决了这个问题。

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

    <intent-filter>

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

    </intent-filter>

</activity>

我有这个,但是带有intent.action.MAIN,它并没有消失。
C. Skjerdal

您需要确保将其设置为android.intent.action.VIEW
Oladipo Olasemo '19

1

仅当您要忽略此警告时,此解决方案才有效

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="GoogleAppIndexingWarning"
    package="com.example.saloononlinesolution">
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.