HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请?
HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请? 我在配置 entry/src/main/module.json5 文件时遇到一些问题,想了解:
-
mainElement 如何指定入口 Ability?abilities 数组如何配置?
-
pages 字段如何引用 main_pages.json 路由配置文件?
-
requestPermissions 如何申请系统权限(如网络、存储、通知等)?
-
deviceTypes 支持哪些设备类型?skills 配置有什么作用?
希望能获取 module.json5 的完整配置示例和常用权限列表。
更多关于HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
实现思路:
- 配置模块基本信息,mainElement 指定入口 Ability 名称,pages 引用路由配置文件:
{
"module": {
"name": "entry",
"type": "entry",
"mainElement": "EntryAbility",
"deviceTypes": ["phone", "tablet"],
"pages": "$profile:main_pages"
}
}
- 在 requestPermissions 数组中申请需要的系统权限:
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" },
{ "name": "ohos.permission.GET_NETWORK_INFO" },
{ "name": "ohos.permission.READ_MEDIA" }
]
- 在 abilities 数组中配置 Ability 详细信息,skills 定义启动方式:
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"exported": true,
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["ohos.want.action.home"]
}
]
}
]
- 完整示例代码:
// entry/src/main/module.json5
{
"module": {
"name": "entry",
"type": "entry",
"mainElement": "EntryAbility",
"deviceTypes": ["phone", "tablet"],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" },
{ "name": "ohos.permission.READ_MEDIA" }
],
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["ohos.want.action.home"]
}
]
}
]
}
}
// resources/base/profile/main_pages.json
{
"src": [
"pages/MainPage",
"pages/DetailPage",
"pages/SearchPage"
]
}
更多关于HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在module.json5中配置Ability入口需在abilities数组内定义,入口Ability需设置"isEntry": true。页面路由通过"srcEntry"指定入口页面路径,页面跳转使用router模块接口。权限申请在"requestPermissions"数组中声明所需权限名称与原因,部分权限需动态申请。配置示例如下:
"abilities": [{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"isEntry": true
}],
"requestPermissions": [{
"name": "ohos.permission.CAMERA",
"reason": "需要摄像头功能"
}]
1. mainElement 与 abilities 配置
mainElement 指定应用启动时的入口 Ability,值为 abilities 数组中目标 Ability 的 “name” 字段。abilities 数组配置示例:
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:description_entryability",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"actions": ["action.system.home"],
"entities": ["entity.system.home"]
}
]
}
],
"mainElement": "EntryAbility"
2. pages 路由配置
pages 字段直接引用 main_pages.json 文件路径(基于模块根目录),示例:
"pages": "$profile:main_pages"
main_pages.json 内容示例:
{
"src": [
"pages/Index",
"pages/Detail"
]
}
3. requestPermissions 权限申请
在 module.json5 的 “module” 字段内配置 requestPermissions 数组,示例:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"reason": "$string:reason_internet",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "always"
}
},
{
"name": "ohos.permission.NOTIFICATION_CONTROLLER",
"reason": "$string:reason_notification"
}
]
常用权限列表:
- 网络:ohos.permission.INTERNET
- 存储:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA
- 通知:ohos.permission.NOTIFICATION_CONTROLLER
- 位置:ohos.permission.LOCATION
4. deviceTypes 与 skills 配置
deviceTypes 声明支持的设备类型,示例:
"deviceTypes": ["phone", "tablet", "tv"]
skills 定义 Ability 能够响应的 Intent 动作(如桌面图标启动、特定协议打开),常见配置:
"skills": [
{
"actions": ["action.system.home"],
"entities": ["entity.system.home"]
},
{
"actions": ["ohos.want.action.viewData"],
"uris": [
{
"scheme": "https",
"host": "example.com"
}
]
}
]
完整 module.json5 示例片段:
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": ["phone", "tablet"],
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"exported": true,
"skills": [
{
"actions": ["action.system.home"],
"entities": ["entity.system.home"]
}
]
}
],
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"reason": "$string:reason_internet"
}
]
}
}

