HarmonyOS 鸿蒙Next卡片如何使用deeplink跳转

HarmonyOS 鸿蒙Next卡片如何使用deeplink跳转

选型API版本

不同版本的API,支持的接口或者语言规范并不完全相同,在鸿蒙官网可以有三种模式可以参考。

API 6下的基于JS的类web开发范式

暂未找到监听web跳转的API接口,无法拦截修改操作。

API 6下的基于Java的开发模式

基于intent实现deeplink跳转,参数为当前的ability实例,想要跳转的应用包名,以及跳转的deeplink的url如:“appmarket://details?id=” + androidPackageName。

public void jumpAndroidApp(Ability ability, String androidPackageName, String url) {
    Intent intent = new Intent();
    Operation operation = new Intent.OperationBuilder()
        .withUri(Uri.parse(url))
        .withAction("android.intent.action.VIEW")
        .withBundleName(androidPackageName)
        .withFlags(Intent.CLONE_BUNDLE | Intent.FLAG_ABILITY_NEW_MISSION | Intent.FLAG_ABILITY_CLEAR_MISSION)
        .build();
    intent.setOperation(operation);
    try {
        ability.startAbility(intent);
    } catch (Exception e) {
    }
}

API 9下基于Arkts的开发模式

基于Want实现deeplink跳转,参数为abilityName和bundleName。

let context = ...; // 当前上下文UIAbilityContext
let want = {
    deviceId: '', // deviceId为空表示本设备
    bundleName: 'com.example.myapplication',  // 必填
    abilityName: 'FuncAbility',  // 必填
    moduleName: 'func', // moduleName非必选
    parameters: { // 自定义传递的参数
        info: '来自EntryAbility Index页面',
    },
}
context.startAbility(want).then(() => {
    console.info('Succeeded in starting ability.');
}).catch((err) => {
    console.error(`Failed to start ability. Code is ${err.code}, message is ${err.message}`);
})

更多关于HarmonyOS 鸿蒙Next卡片如何使用deeplink跳转的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next卡片如何使用deeplink跳转的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用DeepLink实现卡片跳转的步骤如下:

  1. 定义DeepLink:在config.json中为Ability定义uri,例如"uri": "example://detail"

  2. 创建卡片:在form_config.json中配置卡片,并指定跳转的Ability。

  3. 触发跳转:在卡片的事件处理中,使用startAbility方法,传入DeepLink的URI,如startAbility({ uri: "example://detail" })

  4. 处理跳转:在目标Ability的onCreate方法中,通过intent.uri获取DeepLink参数,执行相应逻辑。

通过这些步骤,可以实现HarmonyOS卡片通过DeepLink跳转到指定页面的功能。

回到顶部