HarmonyOS 鸿蒙Next中三方应用唤起APP问题
HarmonyOS 鸿蒙Next中三方应用唤起APP问题 这边用另外一个app以及在浏览器中尝试唤起都是失败,弹出提示框“无法打开此链接,可前往应用市场查找更多应用”。
浏览器支持Deeplink链接的打开能力。应用想要响应Deeplink拉起,需要注册viewData action和scheme+host,这样才能匹配到。如果有多个应用注册了相同的scheme+host,就会拉起应用选择框,让用户选择某个应用。 Deeplink响应的声明,需要在module.json5文件的接收Ability中skills项中增加action和uris内容:
"skills": [
{
  ...
  "actions": [
  "ohos.want.action.viewData" // 声明Deeplink接收的Action,这个是固定的
  ...
  ],
  "uris": [
  {
    "scheme": "store",  // scheme尽量做到唯一 ,仅设置此协议头就可以跳转
    "host": "test.xxx.com" // host不与其他应用相同,这样可以减少冲突
  }
  ...
  ]
  ...
}
]
需要注意deeplink链接的scheme协议头必须网页拉起的链接的应用配置的保持一致。
另外浏览器不会对deeplink链接做任何解析或处理,只会原封不动的传递给拉起的应用。因此第三方应用只需要自己的网页端和应用端协商好url规则,自己去做解析打开对应页面即可
webview Deeplink拉起应用示例:
import web_webview from '@ohos.web.webview';
import { common, Want } from '@kit.AbilityKit';
@Entry
@Component
struct WebPage {
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  build() {
    Row() {
      Column() {
        Web({ src: $rawfile('local.html'), controller: this.controller })
          .onLoadIntercept((event) => {
            if (event) {
              let url: string = event.data.getRequestUrl();
              console.log(url)
              // 判断链接是否为拨号链接
              if (url.indexOf('store://') === 0) {
                // 跳转拨号界面
                const want: Want = {
                  uri: ''
                }
                const context = getContext(this) as common.UIAbilityContext;
                context.startAbility(want).then(() => {
                  //拉起成功
                }).catch(() => {
                })
                return true;
              }
            }
            return false;
          })
          .domStorageAccess(true)
      }
      .width('100%')
    }
    .height('100%')
  }
}
更多关于HarmonyOS 鸿蒙Next中三方应用唤起APP问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙Next)中,三方应用唤起APP的问题主要涉及到应用间的跳转机制。鸿蒙系统提供了Ability和Intent两种方式来实现应用间的跳转。Ability是鸿蒙系统中应用的基本组成单元,分为Page Ability和Service Ability。Page Ability用于展示UI界面,Service Ability用于后台服务。Intent是鸿蒙系统中用于传递消息和数据的一种机制,可以通过Intent实现应用间的跳转。
在鸿蒙Next中,三方应用唤起APP需要通过Intent来实现。具体步骤如下:首先,目标应用需要在配置文件中声明相应的Ability,并设置相应的Intent过滤器(Intent Filter)。然后,发起跳转的应用通过构造Intent对象,并设置相应的目标Ability和参数,最后调用startAbility()方法实现跳转。需要注意的是,跳转的目标Ability必须是Page Ability,因为只有Page Ability才能展示UI界面。
此外,鸿蒙系统还提供了隐式Intent和显式Intent两种方式。显式Intent直接指定目标Ability的包名和类名,适用于应用内部跳转。隐式Intent通过设置Action、Category、Data等属性,系统会根据这些属性匹配相应的Ability,适用于应用间跳转。三方应用唤起APP通常使用隐式Intent。
鸿蒙系统还支持多设备协同,可以通过分布式能力实现跨设备应用跳转。分布式能力允许应用在不同的设备间共享数据和功能,通过分布式软总线和分布式数据管理实现。在跨设备跳转时,发起跳转的设备需要通过分布式软总线查找目标设备,并构造相应的Intent对象,最后调用startAbility()方法实现跨设备跳转。
总结来说,鸿蒙Next中三方应用唤起APP主要通过Intent实现,涉及显式Intent和隐式Intent两种方式,并支持跨设备跳转。
在HarmonyOS(鸿蒙)Next中,三方应用唤起APP主要通过**意图(Intent)**机制实现。开发者可以使用startAbility方法,指定目标应用的bundleName和abilityName来启动目标应用。同时,需要在config.json中声明权限,确保应用具备跨应用调用的能力。若目标应用支持深度链接(Deep Link),也可通过URL Scheme直接唤起。建议确保目标应用已安装,并处理调用失败的情况,以提升用户体验。
 
        
       
                   
                   
                  

