包名不一致导致应用启动失败

问题描述

我在使用huawei AppLinking Service时,通过查询应用包名定位到应用详情页。但是,应用程序包名称因频道而异。比如华为渠道,包名以.huawei结尾,与谷歌渠道的包名不同。是不是说包名不一致,本地所有应用商店都无法打开App Linking链接

解决方法

这是否意味着应用链接链接无法在 包名不一致导致所有本地应用商店?

答案是,因为这个问题有解决方案。

执行以下操作以解决问题:

我们知道,如果应用尚未安装,App Linking 可以将用户重定向到自定义网站,因此您可以使用 Android Intent 创建自定义链接,您可以在其中配置要打开的包名称和回退 URL。基本语法如下:

intent:
   HOST/URI-path    // Optional host 
   #Intent; 
      package=[string]; 
      action=[string]; 
      category=[string]; 
      component=[string]; 
      scheme=[string]; 
S.browser_fallback_url=[encoded_full_url]
end; 

利用上述功能,您可以:

  1. 创建App Linking的链接,并使用setOpenType(CustomUrl)方法设置打开类型,将用户重定向到Android平台的自定义网站。涉及的API如下:
.setAndroidLinkInfo(new AppLinking.AndroidLinkInfo.Builder()
.setAndroidDeepLink(Android_LINK)
.setOpenType(CustomUrl)
.setFallbackUrl(BACK_LINK)
.build())
  1. 使用 Android Intent 配置上述自定义网站。这里我以淘宝为例:
"intent://details?id=com.taobao.taobao#Intent;scheme=appmarket;package=com.huawei.appmarket;S.browser_fallback_url=https://play.google.com/store/apps/details?id=com.taobao.taobao;end"

流程如下:

1.使用appmarket方案启动包名为com.huawei.appmarket的应用,即打开华为应用市场。

2.将包名com.taobao.taobao传递给华为应用市场。然后,华为应用市场会启动这个包。

3.如果没有找到com.huawei.appmarket,设置S.browser_fallback_url为fallback URL。

4.后备网址是 Google Play 链接。只需将此 URL 中的 id 设置为要打开的包的名称。本例中,ID为com.taobao.taobao。

确保已完成Android平台的App Linking项目。详情请访问:

https://forums.developer.huawei.com/forumPortal/en/topic/0204442462434640048?fid=0101188387844930001

打开原来的App Linking项目,加粗体的如下信息:

String BACK_LINK = "intent://details?id=com.taobao.taobao#Intent;" +
      "scheme=appmarket;package=com.huawei.appmarket;" +
      "S.browser_fallback_url=https://play.google.com/store/apps/details?" +
      "id=com.taobao.taobao;end";
AppLinking.Builder builder = new AppLinking.Builder()
.setUriPrefix(DOMAIN_URI_PREFIX)
.setDeepLink(Uri.parse(DEEP_LINK))
.setAndroidLinkInfo(new AppLinking.AndroidLinkInfo.Builder()
  .setAndroidDeepLink(Android_DEEP_LINK)
 .setOpenType(CustomUrl)
  .setFallbackUrl(BACK_LINK)
  .build());

enter image description here

测试:

  1. 在设备上安装演示,创建应用链接链接,并将其添加到笔记中。

  2. 卸载应用以模拟未安装应用的场景。

  3. 对于华为手机,点击打开/下载。在显示的应用市场上,打开淘宝详情页。下图为华为浏览器淘宝详情页。

enter image description here enter image description here

  1. 对于非华为手机,请点按打开/下载。在显示的 Google Play 上,打开淘宝详情页面。下图为谷歌浏览器中淘宝详情页。 enter image description here enter image description here

  2. 问题现已解决。如果您遇到类似问题,只需按照我的示例一步一步更改包名称即可解决问题。

更多详情,请访问:

https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-applinking-introduction?ha_source=hms1

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...