HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请?

HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请? 我在配置 entry/src/main/module.json5 文件时遇到一些问题,想了解:

  1. mainElement 如何指定入口 Ability?abilities 数组如何配置?

  2. pages 字段如何引用 main_pages.json 路由配置文件?

  3. requestPermissions 如何申请系统权限(如网络、存储、通知等)?

  4. deviceTypes 支持哪些设备类型?skills 配置有什么作用?

希望能获取 module.json5 的完整配置示例和常用权限列表。


更多关于HarmonyOS鸿蒙Next中module.json5如何配置Ability入口、页面路由和权限申请?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

实现思路:

  1. 配置模块基本信息,mainElement 指定入口 Ability 名称,pages 引用路由配置文件:
{
  "module": {
    "name": "entry",
    "type": "entry",
    "mainElement": "EntryAbility",
    "deviceTypes": ["phone", "tablet"],
    "pages": "$profile:main_pages"
  }
}
  1. 在 requestPermissions 数组中申请需要的系统权限:
"requestPermissions": [
  { "name": "ohos.permission.INTERNET" },
  { "name": "ohos.permission.GET_NETWORK_INFO" },
  { "name": "ohos.permission.READ_MEDIA" }
]
  1. 在 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"]
      }
    ]
  }
]
  1. 完整示例代码:
// 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"
      }
    ]
  }
}
回到顶部