HarmonyOS鸿蒙Next中拉起一个EmptyPageAbility,但无法显示页面内容,报错为401
HarmonyOS鸿蒙Next中拉起一个EmptyPageAbility,但无法显示页面内容,报错为401 通过联系人拉起一个EmptyPageAbility,显示一个空白界面,但无法显示页面内容,报错为401。配置已检查,求助是什么原因
报错信息:Failed to load EmptyPageAbility EmptyPage pages/Index{“code”:401}
这是由于当前的Ability的页面路径没有匹配到对应的页面配置路径导致的;
建议从以下方面进行排查:
-
确保main_pages下的路径与Ability中的windowStage.loadContent的路径一致:page前面没有/
-
//main_pages.json "src": [ "pages/Index" ] -
onWindowStageCreate(windowStage: window.WindowStage): void { //注意这里是 pages/Index; 不是 /pages/Index windowStage.loadContent('pages/Index', (err) => { }); }
-
-
确保page必须在resources/profile目录下main_pages.json中配置;
-
确保main_pages与page的大小写一致
-
如果以上均正确,建议直接右键新建一个Page,再到Ability中的windowStage.loadContent配置对应Page看看是否还是空白

更多关于HarmonyOS鸿蒙Next中拉起一个EmptyPageAbility,但无法显示页面内容,报错为401的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
有没有在main_pages.json加上
main_pages.json
{
"src": [
"pages/Index"
]
}
module.json5
"abilities": [
{
"name": "EmptyPageAbility",
"srcEntry": "./ets/entryability/EmptyPageAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"launchType": "singleton",
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"ohos.want.action.home"
]
}
]
}
]
期待HarmonyOS能继续优化多屏协同功能,让跨设备体验更加完美。
你遇到的问题是:通过联系人拉起 EmptyPageAbility 时,页面无法显示,报错 {"code":401}。这是一个典型的 OpenHarmony/HarmonyOS 权限或 URI 权限校验失败 的错误。
🔍 错误分析:code: 401
在 OpenHarmony/HarmonyOS 系统中,HTTP 状态码风格的错误码常用于 Ability 调起、数据访问等场景:
- 401 = Unauthorized(未授权)
- 表示:当前调用方没有权限启动目标 Ability 或访问其 URI
这通常与以下配置有关:
✅ 常见原因及解决方案
1. 目标 Ability 未声明 visible 为 true
如果 EmptyPageAbility 所在的模块(如 entry)没有在 module.json5 中将该 Ability 设置为 对外可见,其他应用(如“联系人”)就无法拉起它。
✅ 检查 module.json5 配置:
{
"module": {
"abilities": [
{
"name": "EmptyPageAbility",
"srcEntry": "./ets/abilities/EmptyPageAbility.ts",
"visible": true // ← 必须设为 true!
}
]
}
}
⚠️ 默认
visible为false,仅同应用内可访问。跨应用(如系统联系人)调起必须显式设为true。
2. 未配置正确的 skills(意图匹配)
如果你是通过 URI 或隐式 Intent 被联系人拉起,EmptyPageAbility 必须声明能响应的 skills。
✅ 示例(支持被 ohos.want.action.viewData 拉起):
"skills": [
{
"actions": ["ohos.want.action.viewData"],
"entities": ["entity.system.browsable"],
"uris": [
{
"scheme": "your-scheme",
"host": "your-host"
}
]
}
]
如果联系人使用特定 URI(如
tel:、contact:)拉起你,你的uris必须匹配该 scheme/host。
3. 调用方(联系人)未申请必要权限
某些敏感操作(如访问联系人后跳转第三方页面)可能需要调用方具备特定权限。但更常见的是 被调用方(你的 Ability)缺少权限声明。
不过 401 更多指向 被调用方未开放访问权限,而非调用方缺权限。
4. 签名或沙箱隔离问题(较少见)
在高安全级别设备上,如果两个应用签名不同,且目标 Ability 未明确允许跨应用访问,也会拒绝启动。但通常仍归因于 visible: false。
🛠️ 排查步骤总结
-
确认
EmptyPageAbility的visible字段为true
→ 这是 90% 以上 401 错误的原因! -
确认
skills配置能匹配联系人发起的拉起意图
→ 查看联系人是如何调起你的(scheme?action?) -
尝试用 DevEco Studio 直接运行该 Ability
→ 如果直接运行正常,但被联系人拉起失败,基本确定是visible或skills问题。 -
查看完整日志(hilog)
hdc shell hilog | grep EmptyPageAbility可能会输出更详细的拒绝原因,如
"ability not visible"。
💡 附加建议
如果你只是想提供一个“空白回调页面”供外部拉起(比如 OAuth 回调),确保:
- 使用自定义 scheme(如
myapp://callback) - 在
module.json5中正确注册该 scheme - 设置
visible: true - 页面逻辑简单,避免初始化崩溃(虽然 401 是权限问题,不是崩溃)
✅ 最终结论
报错
{"code":401}的根本原因是:EmptyPageAbility未对其他应用开放访问权限。请在module.json5中将该 Ability 的visible属性设置为true,并确保skills配置匹配调用方的拉起方式。
完成配置后重新编译安装,问题应立即解决。
在HarmonyOS Next中,EmptyPageAbility页面无法显示且报错401通常与权限配置相关。检查应用配置文件(app.json5或module.json5)中是否声明了ohos.permission.INTERNET或其他所需权限。401错误可能表示权限未正确授予或配置缺失,需确保权限在配置文件中正确定义并在安装时已授权。
根据报错信息,401错误通常表示权限问题。在HarmonyOS Next中,当通过联系人应用拉起EmptyPageAbility时,需要确保已正确配置相关权限。
请检查以下配置:
- 在config.json中确认已声明
ohos.permission.START_ABILITIES_FROM_BACKGROUND权限 - 确保在abilities配置中正确设置了
visible属性为true - 验证PageAbility的启动模式配置是否正确
- 检查联系人应用是否具备拉起其他应用的能力权限
权限配置示例:
"reqPermissions": [
{
"name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND"
}
]
建议重新检查权限配置和ability的可见性设置,确保符合跨应用拉起的能力要求。


