ChatGPT解决这个技术问题 Extra ChatGPT

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

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

应用无法被 Google 搜索索引;考虑添加至少一个带有 ACTION-VIEW 意图填充的 Activity。有关更多详细信息,请参阅问题说明。添加深层链接以使您的应用进入 Google 索引,从而从 Google 搜索中获取应用的安装量和流量。

https://i.stack.imgur.com/ghLjy.png

谁能解释为什么会这样?

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

P
Philip Herbert

来自官方文档:

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

使用此链接 Enabling Deep Links for App Content,您将了解如何使用它。

并使用此 Test Your App Indexing Implementation 进行测试。

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

@user25 scheme 是 uri scheme,scheme 可以是 http、https、ftp 等
好吧,所有这些都是针对特定应用程序的,那么为什么要显示该警告呢?并非所有应用程序都需要这个,并非所有应用程序都是某些网站的 webview。谷歌好烦啊。。
无论如何都可以使用工具来抑制它:ignore="GoogleAppIndexingWarning"
奇怪的是警告说您需要一个 ACTION-VIEW 意图过滤器,但解决方案涉及 action.VIEW。同样,点击 Android Studio 中的链接会将您带到没有出现 ACTION-VIEW 的网页。他们对突兀的警告至少可以为您提供准确的消息和帮助页面。
@ecle 这个选项放在哪里? / 没关系;我找到了:必须将 xmlns:tools="http://schemas.android.com/tools" 添加到 manifest 标记,然后将 tools:ignore... 添加到 application 标记。
B
Bibin Johny

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

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

这项工作是给我的。我认为这就是我正在寻找的答案。
如果您不想启用应用索引,这似乎是正确的解决方案。而不是仅仅通过 tools:ignore="GoogleAppIndexingWarning" 删除警告。我将它作为同级添加到主活动中的 <action android:name="android.intent.action.MAIN" />
但是为什么我们盲目地需要这行代码呢?有什么具体原因吗?
@GhanshyamNayma 添加此行只是删除警告。无需添加实际应用索引所需的额外代码。不完全是最佳实践,但我知道警告很烦人。我只会选择 tools:ignore="GoogleAppIndexingWarning",因为这样您就不会添加空的 ACTION_VIEW。它可能不会引起任何问题,但您总是希望安全。
啊,这就是为什么现在有这么多随机应用程序出现在 ACTION_VIEW 中的原因...... eesh
A
Andy Weinstein
<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> 标记来删除警告。


这对我有用,而且正是我正在寻找的解决方案。
这是完美的解决方案。
它不是完美的解决方案,因为它不允许谷歌索引应用程序。通过忽略某些事情,您应该尝试克服该问题。
@PratikButaniAndroidDev AppStore 中的索引对于许多开发人员来说并不优先,主要是因为开始开发应用程序..
O
Oladipo Olasemo

将此意图过滤器添加到应用程序清单中声明的活动之一为我解决了这个问题。

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

    <intent-filter>

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

    </intent-filter>

</activity>

我有这个,但意图.action.MAIN 并没有消失。
您需要确保将其设置为 android.intent.action.VIEW
b
benten

此解决方案仅适用。如果您想忽略此警告

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

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅