过去几个小时我一直在试验 Intent Filters,我真的很困惑为什么谷歌教程代码为 Handling App Links via Intent Filters无法在我的三星 S8 实体设备的默认三星浏览器 或安装在其上的 Firefox 上运行,但可以在 Google Chrome 应用程序上运行。
该代码也适用于默认的 Android Studio Nexus 5 模拟器默认浏览器应用程序以及 Google Chrome。
这是我在 AndroidManifest.xml
中的相关代码我正在尝试通过以下方式诊断问题的准系统应用程序的一部分:
<intent-filter">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="www.android.com" />
</intent-filter>
我正在做的测试:
我点击 https://www.android.com 的链接来自 Google 的搜索结果页面。
我希望看到一个打开的对话框,其中包含我的测试应用程序名称,但是当我从 google chrome 浏览器(和 Nexus 5 模拟器默认浏览器)以外的任何地方尝试这个时,它不会显示,它只是自动显示没有的网页弹出对话框。
N.B. 到目前为止,我还尝试了以下方法但无济于事:
- 将第一行更改为
<intent-filter android:autoVerify="true">
- 添加行
<data android:host="www.android.com/" />
如果问题与/
有关在 URL 的末尾。 - 清除两个浏览器的数据/存储并通常将其重置。
有谁知道为什么会这样/如何解决这个问题?
最佳答案
浏览器本身需要支持和实现可浏览性。浏览器在打开网页时必须找到支持 android.intent.category.BROWSABLE
的其他 Activity 。
Firefox 为用户带来了侵入性较小的体验。当打开一个包含应用程序深层链接的 url 时,url 栏会显示一个带有小 Android 头像的页面操作。单击此链接将打开包含浏览器以外的 Android Activity 的链接。
您观察并做出预期的 Android 浏览器和 Chrome 的行为。所以没有什么要补充的。
我不确定我是否可以完整地谈论三星浏览器,因为我设备上的版本可能已经过时了;但我根本无法让它与这些一起工作。
android:autoVerify
属性仅使该应用程序成为安装时的默认应用程序。 android:host="www.android.com/"
是错误的,因为 /
是路径而不是主机的一部分。
关于android - 用于从在三星浏览器/Firefox 等中不起作用但在 Chrome 中起作用的链接打开应用程序的 Intent 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44590382/