Android - 在更新 SDK 版本 23 后添加至少一个带有 ACTION-VIEW 意图过滤器的 Activity
Posted
技术标签:
【中文标题】Android - 在更新 SDK 版本 23 后添加至少一个带有 ACTION-VIEW 意图过滤器的 Activity【英文标题】:Android - Adding at least one Activity with an ACTION-VIEW intent-filter after Updating SDK version 23 【发布时间】:2016-03-25 21:16:10 【问题描述】:我在 AndroidManifest.xml 中得到以下工具提示:
应用无法被 Google 搜索索引;考虑添加至少一个 带有 ACTION-VIEW 意图填充的活动。请参阅问题说明 更多细节。
添加深层链接以使您的应用进入 Google 索引, 从 Google 搜索中获取应用的安装量和流量。
谁能解释为什么会这样?
【问题讨论】:
要查看它的实际效果,请参见此处:***.com/questions/56631387/… 【参考方案1】:来自官方文档:
要使 Google 能够抓取您的应用内容并允许用户从搜索结果中输入您的应用,您必须在应用清单中为相关活动添加意图过滤器。这些意图过滤器允许深度链接到您的任何活动中的内容。例如,用户可能会单击深层链接以查看购物应用程序中描述用户正在搜索的产品的页面。
使用此链接Enabling Deep Links for App Content,您将了解如何使用它。
并使用这个Test Your App Indexing Implementation 来测试它。
以下 XML sn-p 显示了如何指定意图过滤器 在您的清单中进行深度链接。
<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
标签。【参考方案2】:
您可以通过在<intent-filter>
内的<activity>
中添加以下代码来删除警告
<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 中的原因...哎呀【参考方案3】:
<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 中的索引并不是许多开发人员的优先事项,主要是因为开始开发应用程序..【参考方案4】:将此意图过滤器添加到应用清单中声明的活动之一为我解决了这个问题。
<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 并没有消失。 您需要确保将其设置为 android.intent.action.VIEW【参考方案5】:此解决方案仅适用。如果您想忽略此警告
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="GoogleAppIndexingWarning"
package="com.example.saloononlinesolution">
【讨论】:
以上是关于Android - 在更新 SDK 版本 23 后添加至少一个带有 ACTION-VIEW 意图过滤器的 Activity的主要内容,如果未能解决你的问题,请参考以下文章
更新到 sdk 版本 23 后,我的应用程序因一些浮动操作按钮错误而崩溃?
解决在sdk manager中更新文件后出现This Android SDK requires Android Developer Toolkit version 23.1的错误
此 Android SDK 需要 ADT 版本 23.0.0 或更高版本。当前版本是 22.6。请更新 ADT 到最新版本? [复制]
在 Android 中将 SDK 版本更新为 24.3 后,所有库都显示错误