使用意图不打开应用程序的 Android 深层链接

Posted

技术标签:

【中文标题】使用意图不打开应用程序的 Android 深层链接【英文标题】:Android deep link using intent not opening app 【发布时间】:2019-05-19 01:40:48 【问题描述】:

我正在尝试打开我通过移动 chrome 浏览器制作的应用。

https://developer.chrome.com/multidevice/android/intents

从这个链接中,我认为我必须使用“intent:”语法来完成这项工作。

但是,我的应用无法打开。相反,它会打开 Google Play 商店,但商店只显示“未找到项目”页面。

我很想知道我是否做错了什么。

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

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

            <data android:scheme="myscheme" android:host="myhost" android:path="/"/>
        </intent-filter>

这是我写的意图过滤器。

var androidIntentUrl = 'intent://myhost/#Intent;scheme=myscheme;package=my.test.app.package;end';

if(!isios && isChromeAndBiggerThanVer25()) 
        location.href = androidIntentUrl;

这是我在网上写的。

是否必须在 Play 商店上发布应用才能实现这一点?

我还不太明白全部内容。

我想知道怎么了。

PS)名称“myscheme”和“myhost”只是我为写这个问题而编造的名字。我的代码中的实际名称与我的项目设置中写入的名称以及所有内容(包括包名称)匹配。

【问题讨论】:

您尝试过类似&lt;a href="myscheme://myhost/some/other/parameters"&gt; 的链接吗?我认为您需要使用定义的架构(在您的情况下为 myscheme)而不是 intent:// @Alexey 感谢您的建议。但是,官方文档(我写的链接)指出,如果使用版本高于 25 的 Android Chrome 浏览器,则必须使用意图语法。不过我还是会试试的。谢谢。 @Alexey 哇!成功了!谢谢! 【参考方案1】:

正如 Alexey 评论我的帖子,

<a href="myscheme://myhost/some/other/parameters">

对我来说还不错。

我仔细检查了官方文档(我帖子上的链接)和我的 chrome 版本(71),所以我不知道为什么 intent:// 语法不起作用。

我猜想在 25 版之后的移动版 Chrome 上发生了一些我错过或找不到的更改。

【讨论】:

【参考方案2】:

我刚刚遇到了同样的问题,即与 Intents 的链接不起作用,但直接方案链接却起作用。但是,我不想使用直接版本将后备重定向到 PlayStore。

解决方案是意图链接中的包参数不必必须与 AndroidManifest.xml 中给出的包相匹配。我正在处理一个 Unity 项目,并且必须使用项目设置中给出的包名称。

tl;dr:这在 Chrome (v78) 中仍然有效,但 package 参数不一定是清单中给出的包。

【讨论】:

在哪里可以找到捆绑包名称?【参考方案3】:

package 参数应与您的应用程序 ID 匹配(在 build.gradle 或您的 AndroidManifest.xml 中找到)

上面的示例代码显示包为my.test.app.package,如果这不是您的应用包名称或未安装该应用,则 Intent 将默认到 Google Play 商店进行搜索。同样,最好将 hostscheme 参数更改为您的应用程序自定义的参数(如果您还没有的话)。

【讨论】:

哦,谢谢你的回答。可悲的是,这些只是我写问题时编造的名字。在我的实际代码中,包参数确实与应用程序 ID 匹配。对不起,我忘了提。 哎呀!应该想到:P【参考方案4】:

我的答案是使用深度链接从 Web 应用程序打开 android 应用程序:

Flipkart     - <a href="flipkart://app"> Open Flipkart!  </a>
WhatsApp     - <a href="whatsapp://app"> Open WhatsApp!  </a>
*** Royale - <a href="***royale://app"> Open *** Royale!  </a>
FaceBook     - <a href="fb://app"> Open FaceBook!  </a>

如果列出的应用程序安装在您的手机中,则只有它会打开,否则您必须单独处理。

【讨论】:

以上是关于使用意图不打开应用程序的 Android 深层链接的主要内容,如果未能解决你的问题,请参考以下文章

Android 深度链接。从历史记录打开应用程序时,意图不会重置

Android深层链接(意图过滤器)数据大小限制?

深层链接意图不起作用

注册不包含子域的 Android 深层链接路径

Android 深层链接不遵循路径前缀

如果应用程序已通过深层链接打开,Android 深层链接将不起作用