Android 深层链接如何在 Chrome OS 浏览器中运行?

How can Android deep links be made to work from the Chrome OS browser?

在网页上,我有一个 URL 对我的 Android 应用来说是一个很深的 link。它的形式是 myapp://myrequest?url=someurl

这是通过应用清单中的意图过滤器捕获的。我在 activity 的 onCreate() 中使用 getIntent().getData.getQueryParameter("url") 来获取 someurl 部分,这是我需要进一步处理的部分。意图过滤器的形式为:

<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="myapp"
        android:host="myrequest" />
</intent-filter>

它在 Android 设备和通过 APK and/or ChromeOS 设备上的 Play 商店安装的 Android 浏览器上完美运行。但它不适用于本机 ChromeOS 浏览器。单击 link 时,会打开一个对话框,其中显示以下消息:

Google Chrome OS can't open this page

如何让它发挥作用?我必须以不同的方式格式化 URL 吗?我必须添加 and/or 修改 intent 过滤器吗?还是我必须对 ChromeOS 使用一些完全不同的方法?

经过反复试验,我注意到本机 ChromeOS 浏览器不喜欢使用自定义方案打开 Android 应用程序。 如果您改用 httphttps,浏览器会询问您是否要使用您的应用打开 URL。

示例:

<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="https"
        android:host="my.app.com" />
</intent-filter>

要测试启动您的应用程序,请在浏览器控制台中使用 window.open("https://my.app.com");