在 Android 上使用 Chrome 打开 android-应用方案

Open android-app scheme with Chrome on Android

我想知道如何配置我的应用程序才能使用 android-app://application.id 打开它?

adb shell am start android-app://application.id

URI_ANDROID_APP_SCHEME 似乎无法像记录的那样工作。相反 Chrome 和 Firefox 只打开 market:// link 到我的应用程序。

对于 Chrome 我发现 a documentation 只描述了 intent:// 方案。

当 Intent 过滤器包含 DEFAULTBROWSABLE 类别时,它适用于 Firefox.

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

您必须在 intent-filter 中为您的组件添加 <data../> 描述 URI,就像这样,

<intent-filter>
   ...

   <data android:scheme="android-app"/>
</intent-filter>

并在您的站点部分定义这样的意图

intent:#Intent;scheme=android-app;package=your_package;end

更新。 没有意识到该方案是保留方案,尽管我的解决方案适用于您定义的任何方案。 我查找了 Intent 的来源 class 看来你必须像这样定义你的 URI

android-app://your_package

android-app://your_package/ 
#Intent;action=com.example.MY_ACTION;end

Android Intent 中 parseUri 方法的第一行 class

final boolean androidApp = uri.startsWith("android-app:");

值得一提:此方案是在 API 22 添加的。

我已经测试过它可以与 a 标签一起使用,正如@tynn 在评论中提到的,window.open()location.href 以及 不适用于地址栏在Chrome.