HarmonyOS鸿蒙Next中为什么我调用完application_info_entry这个,跳过去立马返回来了?

HarmonyOS鸿蒙Next中为什么我调用完application_info_entry这个,跳过去立马返回来了?

startAppSettingAbility() {
  // AppUtil.toAppSetting()
  // 获取上下文
  const context = getContext() as common.UIAbilityContext
  // 获取包信息
  const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
  let name = bundleInfo.name
  // 打开系统设置页
  context.startAbility({
    bundleName: 'com.huawei.hmos.settings',
    abilityName: 'com.huawei.hmos.settings.MainAbility',
    uri: 'application_info_entry',
    parameters: {
      // 按照包名打开对应设置页
      pushParams: bundleInfo.name
    }
  }).then(() => {
    console.info("Start settings ability successfully.");
  }).catch((err: BusinessError) => {
    console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
  });
}

我调用这段代码,跳转到一半空白直接返回了。但是调用其他api,比如:wifi_entry,bluetooth_entry之类的都是正常的。为什么?环境是开发环境


更多关于HarmonyOS鸿蒙Next中为什么我调用完application_info_entry这个,跳过去立马返回来了?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

哪个版本的 deveco studio?模拟器/真机 API 是多少呢?

是用模拟器测试的吗?可以用真机试试。

更多关于HarmonyOS鸿蒙Next中为什么我调用完application_info_entry这个,跳过去立马返回来了?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


DevEco Studio 5.1.1 Beta1,api版本是5.0.0(12),就是用真机试的,别的跳转没问题,就这个application_info_entry不行,

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

【问题分析】

我在测试环境使用真机调试是能够正常打开的:我使用的手机API版本是20,楼主参考一下导入有没有问题

【参考代码】

import {
  abilityAccessCtrl,
  AtomicServiceOptions,
  bundleManager,
  common,
  OpenLinkOptions,
  Want,
  wantConstant
} from '@kit.AbilityKit';
startAppSettingAbility() {
  // AppUtil.toAppSetting()
  // 获取上下文
  const context = getContext() as common.UIAbilityContext
  // 获取包信息
  const bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION)
  let name = bundleInfo.name
  // 打开系统设置页
  context.startAbility({
    bundleName: 'com.huawei.hmos.settings',
    abilityName: 'com.huawei.hmos.settings.MainAbility',
    uri: 'application_info_entry',
    parameters: {
      // 按照包名打开对应设置页
      pushParams: bundleInfo.name
    }
  }).then(() => {
    console.info("Start settings ability successfully.");
  }).catch((err: BusinessError) => {
    console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}`);
  });
}
Button('打开设置页').onClick((event: ClickEvent) => {
  this.startAppSettingAbility()
})

你看我上面的代码,对比了下,都一样的。我的api是12,

在HarmonyOS Next中,调用application_info_entry后立即返回,通常是由于应用信息查询生命周期管理机制导致的。系统在获取应用信息条目后,若检测到无后续操作需求或上下文环境不满足持续条件,会自动终止查询流程并返回调用点。可能涉及权限校验未通过、查询参数不完整或系统资源调度策略等因素。建议检查调用时的上下文状态和参数配置是否符合API规范要求。

从代码看,问题可能出在 application_info_entry 的特定参数处理上。系统设置应用可能对 pushParams 的格式或内容有特定要求,而当前传入的 bundleInfo.name 可能不符合预期。

建议检查以下几点:

  1. 确认 bundleInfo.name 是否为有效的包名字符串,避免包含特殊字符或为空。
  2. 尝试将 pushParams 改为明确的包名字符串进行测试,例如 'com.example.myapp',以排除动态获取包名时的潜在问题。
  3. 查看系统日志中是否有相关错误信息,可能包含更具体的失败原因。

由于 wifi_entry 等入口正常,说明基础跳转逻辑无误,问题应集中在 application_info_entry 的参数处理上。

回到顶部