HarmonyOS 鸿蒙Next 基于OpenHarmony的applications_launcher示例 如何使用 Navigation 跳转

HarmonyOS 鸿蒙Next 基于OpenHarmony的applications_launcher示例 如何使用 Navigation 跳转

参考 applications_launcher 使用 5.0.0.71 SDK 开发 launcher 应用过程中发现按照README更新hap的方式安装 launcher 后

深色代码主题
复制
ren phone_launcher-default-signed.hap Launcher.hap
ren launcher_settings-phone_launcher-default-signed.hap Launcher_Settings.hap

hdc target mount hdc shell rm -rf /data/misc_de/0/mdds/0/default/bundle_manager_service hdc shell rm -rf /data/accounts hdc shell mount -o remount,rw / hdc file send .\Launcher.hap /system/app/com.ohos.launcher/Launcher.hap hdc file send .\Launcher_Settings.hap /system/app/com.ohos.launcher/Launcher_Settings.hap

pause

hdc shell mount -o remount,rw / hdc shell rm /data/* -rf hdc shell sync /system/bin/udevadm trigger hdc shell reboot

运行时Navigation会跳转空白页面,但如果执行 hdc shell bm install 安装就能使Navigation正常跳转。

同时,异常状况下 bundleManager.getBundleInfoForSelfSync(0x00000202).routerMap 获取路由配置routerMap为空,执行install后能获取正常的配置。

由于需要作为系统应用烧录,希望大佬们指导一下如何在不执行 install的情况下正常使用Navigation。


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

4 回复

可以按以下思路看下是否是navigation和router混用的情况跳转到错误页面导致的:

如果在使用Navigation时调用了一个错误的routeName跳转页面,可能会跳转到一个空白页而不是拦截跳转。这是因为Navigation组件默认不会检查路由名称的正确性,所以如果传入的参数不匹配任何已定义的路由,Navigation就无法进行拦截处理。Navigation确实暂未提供跳转错误routeName时阻止页面跳转功能,需要自行定义跳转到一个错误提示页面,如果对此方案不满意,可以提出相应需求~
和您确认下该需求的使用场景,是只使用navigation的时候出现这种情况,还是navigation和router混用的时候出现的
鸿蒙现在已提供Navigation路由拦截能力,参考链接为:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/arkts-navigation-navigation.md#%E8%B7%AF%E7%94%B1%E6%8B%A6%E6%88%AA

SwiftUI跳转不存在页面也是空白页,系统并不拦截;并且鸿蒙现在已提供Navigation路由拦截能力,setInterception接口用于做路由拦截能力,参考链接为:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ui/arkts-navigation-navigation.md#%E8%B7%AF%E7%94%B1%E6%8B%A6%E6%88%AA

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


错误情况有错误码吗,可以参考这个demo获取一下错误码:

深色代码主题
复制
import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION;

try { let data = bundleManager.getBundleInfoForSelfSync(bundleFlags); hilog.info(0x0000, ‘testTag’, ‘getBundleInfoForSelfSync successfully: %{public}s’, JSON.stringify(data)); } catch (err) { let message = (err as BusinessError).message; hilog.error(0x0000, ‘testTag’, ‘getBundleInfoForSelfSync failed: %{public}s’, message); }

参考官方链接为:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-bundlemanager-V13#bundlemanagergetbundleinfoforselfsync10

也可以在他的gitee下提个issue看下

在HarmonyOS鸿蒙Next中,基于OpenHarmony的applications_launcher示例,使用Navigation跳转功能主要依赖于ArkUI框架提供的页面跳转机制。以下是简要步骤:

  1. 定义路由:在config.json中配置页面路由信息,确保目标页面已被正确注册和路径可访问。

  2. 页面实例:在需要跳转的页面或组件中,通过this.$appContext获取应用上下文,然后使用navigator.pushnavigator.replace方法进行页面跳转。

  3. 传递参数:若需传递参数,可在navigator.pushnavigator.replace的第二个参数中定义对象,包含要传递的数据。

  4. 接收参数:在目标页面的onInit生命周期函数中,通过this.$page.datathis.$appContext.router.getParams()获取传递的参数。

示例代码:

// 发起跳转页面
this.$appContext.navigator.push({
    uri: 'page://your.target.page',
    params: {
        key: 'value'
    }
});

// 目标页面接收参数
export default {
    onInit() {
        const params = this.$appContext.router.getParams();
        console.log(params.key); // 输出 'value'
    }
}

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部