2

在网页上,我有一个指向我的 Android 应用程序的深层链接的 URL。它的形式myapp://myrequest?url=someurl

这是通过应用清单中的意图过滤器捕获的。我getIntent().getData.getQueryParameter("url")onCreate()我的活动中使用来获取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 和/或 ChromeOS 设备上的 Play 商店安装的 Android 浏览器上完美运行。但它不适用于原生 ChromeOS 浏览器。单击链接时,将打开一个对话框,其中包含以下消息:

Google Chrome 操作系统无法打开此页面

如何使它起作用?我必须以不同的方式格式化 URL 吗?我是否必须添加和/或修改意图过滤器?还是我必须对 ChromeOS 使用一些完全不同的方法?

4

1 回答 1

1

经过反复试验,我注意到原生 ChromeOS 浏览器不喜欢使用自定义方案来打开 Android 应用程序。如果您改为使用http,或者https浏览器会询问您是否要使用您的应用打开 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");在浏览器控制台中使用。

于 2021-03-12T12:46:06.187 回答