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

时间:2018-12-18 15:37:09

标签: android google-chrome android-intent android-manifest deep-linking

我正在尝试打开由移动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”仅是我为编写此问题而使用的名称。代码中的实际名称与项目设置以及所有其他名称(包括程序包名称)中写的名称相同。

4 个答案:

答案 0 :(得分:2)

正如Alexey在我的帖子中评论的

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

对我来说还可以。

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

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

答案 1 :(得分:0)

package参数应与您的应用程序ID(可在build.gradleAndroidManifest.xml中找到)

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

答案 2 :(得分:0)

我的答案是使用深层链接从网络应用打开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>

如果您的手机中安装了列出的应用程序,则只有打开的应用程序才能打开,或者您必须分别处理此案子。

答案 3 :(得分:0)

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

解决方案是intent链接中的package参数不必不必匹配AndroidManifest.xml中给出的包。我当时正在使用Unity项目,必须使用项目设置中提供的捆绑包名称。

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