Intent过滤器,用于从三星浏览器/ Firefox等无效的链接打开应用程序但在Chrome

时间:2017-06-16 13:23:25

标签: android google-chrome firefox intentfilter samsung-mobile

过去几个小时我一直在尝试使用Intent过滤器,我真的很困惑为什么Handling App Links via Intent Filters的Google教程代码不能用于我的物理Samsung S8设备的默认<强大>三星浏览器或安装了Firefox,但是使用谷歌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>

我正在做什么测试:

我点击了Google上搜索结果页面中https://www.android.com的链接。

我希望看到一个带有我的测试应用程序名称的对话框,但是当我尝试使用谷歌浏览器(以及Nexus 5模拟器默认浏览器)以外的任何内容时它都没有显示它只是自动显示网页没有弹出对话框。

N.B。到目前为止,我尝试过以下的事情也无济于事:

  • 将第一行更改为<intent-filter android:autoVerify="true">
  • 如果问题与网址末尾的<data android:host="www.android.com/" />有任何关系,请添加第/行。
  • 清除两个浏览器数据/存储&amp;通常重置它。

有谁知道为什么会发生这种情况/如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

浏览器本身需要支持和实现可浏览性。浏览器在打开网页时必须找到支持android.intent.category.BROWSABLE的其他活动。

Firefox为用户提供了一种侵入性较小的体验。当打开一个与应用程序有深层链接的网址时,网址栏会显示一个带有一点Android头部的网页操作。点击此链接将打开包含浏览器以外的Android活动的链接。

您观察到的Android浏览器和Chrome的行为并提出了您的期望。所以没有什么可以补充的。

我不确定我是否可以完全谈论三星浏览器,因为我在设备上的版本可能会有些过时;但我根本无法使用它们。

android:autoVerify属性仅使应用程序成为安装时的默认设置。 android:host="www.android.com/"是错误的,因为/是路径,而不是主机的一部分。

答案 1 :(得分:-2)

仅为某些链接打开应用

<intent-filter>
  <action android:name="android.intent.action.VIEW"></action>
  <category android:name="android.intent.category.DEFAULT"></category>
  <category android:name="android.intent.category.BROWSABLE"></category>
  <data android:scheme="spuul"></data>
</intent-filter>

有了这个,所有的URI就像spuul:// movies / 123将由应用程序打开。然后,该应用程序可以处理此URI并启动正确的内容。 Google Play的链接就像market:// details?id = com.spuul.android。

如果未安装应用,则退回市场

<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="http" android:host="android.app.spuul.com" android:pathPrefix=""></data>
</intent-filter>