繁体   English   中英

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

[英]Android deep link using intent not opening app

我正在尝试打开我从移动 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”只是我为写这个问题而编造的名称。 我的代码中的实际名称与我的项目设置中编写的名称相匹配,包括包名称。

正如 Alexey 在我的帖子中评论的那样,

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

对我来说工作得很好。

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

我想在第 25 版之后移动版 Chrome 上有一些我错过或找不到的更改。

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM