微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android-应用程序链接的工作方式类似于深层链接

如何解决Android-应用程序链接的工作方式类似于深层链接

我正在我的应用程序中设置应用程序链接,对此我有一个疑问。 我的intent-filter如下所示,您可以看到我启用了属性android:autoVerify="true"的应用链接

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

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

                <data android:host="example.com" android:scheme="https" />
</intent-filter>
  • https://example.com/.well-kNown/assetlinks.json已公开托管并可以访问
  • 我在应用中还有其他域,并且所有域都发布了assetlinks.json文件
  • 每个域的assetlinks.json文件声明调试和发行版本的关系,包名称,SHA 256。
  • 我已验证adb日志,且应用链接验证为success

现在我有一个应用程序“ X”,该应用程序截取相同的intent-filter数据。当我单击https://example.com/hello时,Android系统会启动带有浏览器和“ X”应用程序选项的Intent选择器,因为我的应用程序无法处理/hello路径,基本上表现为常规的深层链接

我的问题是:当我的应用程序已申请example.com域的所有权并正在使用应用程序链接时,为什么Android System将“ X”应用程序显示为选项,而不是仅在浏览器中启动https://example.com/hello?我们没有为/hello路径实现深层链接,我们希望直接在浏览器中启动它,而不是与其他应用程序一起启动。

有没有办法做到这一点?我已经在线阅读了很多文档,找不到任何答案。

解决方法

如果您想硬链接到应用程序并在Chrome中打开链接,或者将其设置为用户浏览器的当前设置,则可以尝试以下操作:

public void supportLink() {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com/"));
    startActivity(browserIntent);
}

然后,如果要让用户单击应用程序中的菜单项来启动链接,则可以调用上述方法。

如果要在活动视图中使用按钮,请使用以下方法:

public void startMyWebLink(View view) {
    supportLink();
}

public void startMyWebLink(View view) {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com/"));
    startActivity(browserIntent);
}

也请参阅此以进一步阅读:

How can I open a URL in Android's web browser from my application?

https://developer.android.com/training/app-links

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。