HarmonyOS鸿蒙Next中通过联系人拉起一个EmptyPageAbility,显示一个空白界面,但无法显示页面内容,报错为401。配置已检查,求助是什么原因

HarmonyOS鸿蒙Next中通过联系人拉起一个EmptyPageAbility,显示一个空白界面,但无法显示页面内容,报错为401。配置已检查,求助是什么原因

IntentExecutorImpl.ets

export default class IntentExecutorImpl extends InsightIntentExecutor {
 try {
 let want: Want = {
    bundleName: 'com.ohos.contacts',
    abilityName: 'EmptyPageAbility',
    parameters: {
      message: `搜索到 ${mediaUri.length} 张图片`
    }
  };
  Logger.i(TAG, '启动参数: ' + JSON.stringify(want));
  // 启动 EmptyPageAbility
  this.context.startAbility(want, (err: BusinessError) => {
    Logger.i(TAG, 'EmptyPageAbility hear');
    if (err.code) {
      console.error(`Failed to startAbility. Code: ${err.code}, message: ${err.message}.`);
    }
    Logger.i(TAG, 'EmptyPageAbility hear1');
  });
  Logger.i(TAG, '✅ EmptyPageAbility 启动');

} catch (err) {
  const error = err as BusinessError;
  Logger.e(TAG, '❌ 启动 EmptyPageAbility 失败: code=' + error.code + ', message=' + error.message);
  // 显示错误提示
  promptAction.showToast({
    message: '启动显示页面失败: ' + error.message,
    duration: 3000
  });
}
}

EmptyPageAbility.ets

// EmptyPageAbility.ets
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';
import Base, { BusinessError } from '@ohos.base';
const DOMAIN = 0x0000;

export default class EmptyPageAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    let context = this.context;
    hilog.info(DOMAIN, 'testTag', 'EmptyPageAbility onCreate - 开始创建'+JSON.stringify(context));
  }
  onWindowStageCreate(windowStage: window.WindowStage): void {
    hilog.info(DOMAIN, 'testTag', 'EmptyPageAbility onWindowStageCreate - 创建窗口阶段');
    // 主窗口创建,设置主页面
    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.info(DOMAIN, 'testTag', 'Failed to load EmptyPageAbility  EmptyPage pages/Index'+ JSON.stringify(err));
        console.error('Failed to load the content. Cause:' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in loading the content. Data: ');
    });
  }

  onForeground(): void {
    hilog.info(DOMAIN, 'testTag', 'EmptyPageAbility onForeground - 进入前台');
  }

  onBackground(): void {
    hilog.info(DOMAIN, 'testTag', 'EmptyPageAbility onBackground - 进入后台');
  }

  onDestroy(): void {
    hilog.info(DOMAIN, 'testTag', 'EmptyPageAbility onDestroy - 销毁');
  }
}

Index.ets

// Index.ets - 简化调试版本
import { common } from '@kit.AbilityKit';
import { Want } from '@kit.AbilityKit';
import { promptAction } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';

const DOMAIN = 0x0000;
@Entry
@Component
struct Index {
  @State message: string = 'Hello World!';
  @State debugInfo: string = '初始化中...';
  build() {
    Column() {
      // 简单按钮测试交互
      Button('点击测试')
        .onClick(() => {
          this.message = 'Hello HarmonyOS!';
          promptAction.showToast({
            message: '按钮点击成功!',
            duration: 1000
          });
          hilog.info(DOMAIN, 'testTag', '按钮点击事件触发');
        })
        .width(200)
        .height(50)
        .margin({ top: 50 })

      // 状态指示
      Text('页面状态: 正常运行')
        .fontSize(14)
        .fontColor(Color.Green)
        .margin({ top: 30 })
    }
    .width('100%')
    .height('100%')
    .backgroundColor(Color.White)
    .justifyContent(FlexAlign.Center)
  }
}

更多关于HarmonyOS鸿蒙Next中通过联系人拉起一个EmptyPageAbility,显示一个空白界面,但无法显示页面内容,报错为401。配置已检查,求助是什么原因的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

401错误通常表示权限问题。检查以下配置:

  1. 在module.json5中确认已申请ohos.permission.READ_CONTACTS权限
  2. 检查requestPermissions权限申请逻辑是否完整
  3. 验证Contacts相关接口调用前是否已获取权限授权
  4. 确认EmptyPageAbility的配置信息是否正确

权限未正确申请或授权会导致页面无法正常显示内容。

更多关于HarmonyOS鸿蒙Next中通过联系人拉起一个EmptyPageAbility,显示一个空白界面,但无法显示页面内容,报错为401。配置已检查,求助是什么原因的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


根据提供的代码和401错误分析,问题出现在权限配置上。在HarmonyOS Next中,跨应用启动Ability需要明确声明相关权限。

在你的module.json5配置文件中,需要添加以下权限声明:

"requestPermissions": [
  {
    "name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND"
  }
]

同时检查目标Ability的配置,确保EmptyPageAbility在contacts应用的module.json5中正确配置了exported属性:

"abilities": [
  {
    "name": "EmptyPageAbility",
    "exported": true
  }
]

401错误通常表示权限不足或目标Ability不可访问。建议按以下步骤排查:

  1. 确认调用方应用已申请START_ABILITIES_FROM_BACKGROUND权限
  2. 确认目标Ability的exported设置为true
  3. 检查bundleName和abilityName拼写是否正确
  4. 验证contacts应用是否已安装且正常运行

权限配置修正后,重新编译部署即可解决401错误并正常显示页面内容。

回到顶部