{"_id":"@cordova-ohos/cordova-plugin-permission","_rev":"3-aebfdaba591ed10df420eaff7cb599c3","name":"@cordova-ohos/cordova-plugin-permission","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@cordova-ohos/cordova-plugin-permission","version":"0.1.0","keywords":["cordova","permission","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-permission@0.1.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-permission/issues"},"dist":{"shasum":"2e184f46e6ef968a8c9100285741fa2e7c838ee0","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-permission/-/cordova-plugin-permission-0.1.0.tgz","fileCount":10,"integrity":"sha512-IS+djKhOQs9/VNCHRG0iE6a+tewIgHJol2tUkkjEh3feogIEVIgAK+7L61B5onCUviXzGpR6l+jUPwhcqKosVg==","signatures":[{"sig":"MEQCIDHKupORjipDEXqtV/3Jry+t2D/7TMMXWXa4U05DyIQnAiATzmvjkb/QK1Q+8JP3dj4UhBHEKUWZ/4Yeajdw6BBLNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40965},"cordova":{"id":"cordova-plugin-permission","platforms":["ohos"]},"engines":{"cordovaDependencies":{"0.1.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"06b6dc027f839327be2c1c7fd6a1584d6a941203","_npmUser":{"name":"wanpengsz","email":"wanpengsz@163.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-permission","type":"git"},"_npmVersion":"9.6.2","description":"Cordova Permission Plugin","directories":{},"_nodeVersion":"20.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-permission_0.1.0_1773997397149_0.4221660609606315","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cordova-ohos/cordova-plugin-permission","version":"0.1.1","description":"Cordova Permission Plugin","cordova":{"id":"cordova-plugin-permission","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-permission"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-permission/issues"},"keywords":["cordova","permission","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"0.1.1":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-permission@0.1.1","gitHead":"8206a2c2ac3199ba25690d9ce2ecd75282e3d343","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-4F6kkdVRhkXqg/J3NqtJhsGgI8QdMXEjbdqDLQWKO6T1z9GbDI5tpwZnz21AevvSqvmoQdoCaJkofu+eaBD0Wg==","shasum":"b8bb91f732057c283d981a1d5254468fa326a0c4","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-permission/-/cordova-plugin-permission-0.1.1.tgz","fileCount":11,"unpackedSize":62859,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCgKwQPtTawYHAeYgyBACDuUw5yPsYQc+DavconkBqMegIgTM/Xw9+hdUZseW7FfFM1fZP11blwmozK+yecWoEs8zg="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-permission_0.1.1_1785144069727_0.15305314531021041"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T09:03:16.787Z","modified":"2026-07-27T09:21:10.117Z","0.1.0":"2026-03-20T09:03:17.295Z","0.1.1":"2026-07-27T09:21:09.867Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-permission/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","permission","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-permission"},"description":"Cordova Permission Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-permission</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-permission@0.1.0](https://www.npmjs.com/package/cordova-plugin-permission/v/0.1.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-permission](#cordova-plugin-permission)\r\n  - [简介](#简介)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [指定平台安装 ohos](#指定平台安装-ohos)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n  - [使用示例](#使用示例)\r\n    - [1. 权限申请前配置](#1-权限申请前配置)\r\n    - [2. 基础使用示例（JavaScript）](#2-基础使用示例javascript)\r\n      - [2.1 检查权限](#21-检查权限)\r\n      - [2.2 申请权限](#22-申请权限)\r\n    - [3. 核心方法详细示例](#3-核心方法详细示例)\r\n      - [3.1 检查权限状态（带逻辑判断）](#31-检查权限状态带逻辑判断)\r\n      - [3.2 申请权限（带逻辑判断）](#32-申请权限带逻辑判断)\r\n  - [使用说明](#使用说明)\r\n    - [核心说明](#核心说明)\r\n  - [权限申请实践](#权限申请实践)\r\n    - [1. 遵循“必要时申请”原则](#1-遵循必要时申请原则)\r\n    - [2. 提供清晰的权限申请理由](#2-提供清晰的权限申请理由)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\ncordova-plugin-permission 是 Cordova 平台权限管理插件，提供统一的 API 接口实现 Android、iOS、OHOS 平台的权限请求、检查与管理功能。支持动态权限申请、权限状态监听及系统权限设置页跳转，解决 Cordova 应用在不同平台下权限管理的差异化问题，保障应用合规性与功能可用性。本文档主要说明在 OHOS 系统中的应用。\r\n\r\n重要提示：申请权限建议下放到具体功能插件中，不建议提前申请权限，例如您的应用中有使用地理位置的权限，在具体的使用场景中再去申请，不推荐在启动应用时申请；例如 cordova-plugin-geolocation 插件，在使用地理位置是会自动弹窗，征求用户的同意，也无需安装该插件进行单独授权。\r\n\r\n- 跨平台统一 API：一套代码适配 Android、iOS、OHOS 权限管理，无需关注平台差异\r\n\r\n- 动态权限支持：兼容 Android 6.0+ 动态权限机制与 iOS 10+ 权限申请逻辑、OHOS 5.0+\r\n\r\n- 完整权限生命周期：支持权限检查、申请\r\n\r\n## 支持平台\r\n\r\n- **Android**：API 19 及以上（Android 4.4+）\r\n\r\n- **iOS**：10.0 及以上\r\n\r\n- **OHOS**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库或 GitCode 仓库获取。\r\n\r\n### 从 npm 安装（推荐）\r\n\r\n```bash\r\n# 使用 hcordova CLI 安装\r\n\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装插件\r\nhcordova plugin add cordova-plugin-permission\r\n```\r\n\r\n### 指定平台安装 ohos\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add cordova-plugin-permission --platform ohos\r\n\r\n# 指定版本安装\r\nhcordova plugin add cordova-plugin-permission@1.0.0 --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n仅为 OHOS 平台安装插件，适用于测试最新功能：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\n\r\n# 默认分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-permission.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-permission.git@develop --platform ohos\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-plugin-permission）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-plugin-permission --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n\r\n### 卸载\r\n\r\n```bash\r\n# Cordova CLI 全平台卸载\r\nhcordova plugin remove cordova-plugin-permission \r\n\r\n# 指定平台卸载\r\nhcordova plugin remove cordova-plugin-permission --platform ohos\r\n```\r\n\r\n## 约束与限制\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n## 使用示例\r\n\r\n插件暴露全局对象 `window.plugins.Permission`，所有方法均支持回调函数语法，以下以“地理位置权限申请”为例，展示完整使用流程。\r\n\r\n### 1. 权限申请前配置\r\n\r\n需在主工程的 modules.json5 中的 requestPermissions 添加对应权限，以地理位置权限为例：\r\n\r\n```json\r\n{\r\n  \"name\" : \"ohos.permission.LOCATION\",\r\n  \"reason\": \"$string:locationInfo\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n},\r\n{\r\n  \"name\" : \"ohos.permission.APPROXIMATELY_LOCATION\",\r\n  \"reason\": \"$string:locationInfo\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n},\r\n{\r\n  \"name\" : \"ohos.permission.LOCATION_IN_BACKGROUND\",\r\n  \"reason\": \"$string:locationInfo\",\r\n  \"usedScene\": {\r\n    \"abilities\": [\r\n      \"EntryAbility\"\r\n    ],\r\n    \"when\": \"always\"\r\n  }\r\n}\r\n```\r\n\r\n### 2. 基础使用示例（JavaScript）\r\n\r\n#### 2.1 检查权限\r\n\r\n```javascript\r\n// 检查权限\r\nfunction has() {\r\n    var permissions = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];\r\n    window.plugins.Permission.has(permissions, function(result){\r\n        document.getElementById(\"hasInfo\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n    })\r\n}\r\n```\r\n\r\n#### 2.2 申请权限\r\n\r\n```javascript\r\n// 申请权限\r\nfunction request() {\r\n    var permissions = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];\r\n    window.plugins.Permission.request(permissions, function(result){\r\n        document.getElementById(\"requestInfo\").innerHTML = JSON.stringify(result);\r\n    },function(){\r\n    })\r\n}\r\n```\r\n\r\n### 3. 核心方法详细示例\r\n\r\n#### 3.1 检查权限状态（带逻辑判断）\r\n\r\n```javascript\r\nvar permissions = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];\r\nwindow.plugins.Permission.has(permissions, function(result){\r\n    if(result[\"ohos.permission.APPROXIMATELY_LOCATION\"] && result[\"ohos.permission.LOCATION\"]) {\r\n      // 已经授权，执行对应功能逻辑\r\n    } else {\r\n      // 未授权，可提示用户申请权限\r\n    }\r\n},function(){\r\n    // 未授权，处理错误逻辑\r\n})\r\n```\r\n\r\n#### 3.2 申请权限（带逻辑判断）\r\n\r\n```javascript\r\nvar permissions = ['ohos.permission.APPROXIMATELY_LOCATION','ohos.permission.LOCATION'];\r\nwindow.plugins.Permission.request(permissions, function(result){\r\n    if(result[\"ohos.permission.APPROXIMATELY_LOCATION\"] && result[\"ohos.permission.LOCATION\"]) {\r\n      // 已经授权，执行对应功能逻辑\r\n    } else {\r\n      // 未授权，提示用户前往设置页开启权限\r\n    }\r\n},function(){\r\n    // 未授权，处理错误逻辑\r\n})\r\n```\r\n\r\n## 使用说明\r\n\r\n### 核心说明\r\n1. 插件调用：所有 API 均通过全局对象 `window.plugins.Permission` 调用，无需额外引入，直接调用对应方法即可。\r\n2. 权限配置：在 OHOS 平台使用时，需先在主工程的 modules.json5 文件的 requestPermissions 中添加对应权限，否则权限申请会失败，配置时需填写正确的权限名称、申请理由及使用场景。\r\n3. 方法说明：has() 方法用于检查指定权限的授权状态，返回结果为对象，key 为权限名称，value 为布尔值（true 为已授权，false 为未授权）；request() 方法用于申请指定权限，申请结果通过回调函数返回。\r\n4. 实践说明：遵循“必要时申请”原则，避免应用启动时一次性申请所有权限，应在用户使用对应功能时再申请；申请权限前，需向用户清晰说明权限使用理由，符合应用上架规则。\r\n5. 注意事项：申请权限建议下放到具体功能插件中，不建议提前申请；部分功能插件（如 cordova-plugin-geolocation）会自动申请对应权限，无需使用本插件单独授权。\r\n6. 错误处理：API 调用失败时，可通过回调函数的错误参数获取错误信息，便于问题排查；权限申请失败时，可提示用户前往系统设置页手动开启权限。\r\n\r\n## 权限申请实践\r\n\r\n### 1. 遵循“必要时申请”原则\r\n\r\n避免应用启动时一次性申请所有权限，在用户使用对应功能时再申请，减少对用户体验的影响，同时符合应用合规要求。\r\n\r\n### 2. 提供清晰的权限申请理由\r\n\r\n根据上架的应用规则，应先弹出使用权限的具体原因，示例：申请位置权限前，显示“需要位置权限以推荐附近的服务”，然后再弹系统弹窗征求同意，提升用户授权意愿。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-permission          # [根目录] 权限插件项目根目录\r\n├── src                            # [源码目录] 存放原生平台代码\r\n│   └── main                       # [主目录] 主代码目录\r\n│       ├── cpp                    # [C++ 目录] C++ 原生代码目录\r\n│       │   └── Permissions        # [C++ 模块] 权限管理 C++ 模块文件夹\r\n│       │       ├── CDVPermission.cpp # [C++ 实现] C++ 源文件，实现权限请求底层逻辑\r\n│       │       └── CDVPermission.h   # [C++ 声明] C++ 头文件，定义权限接口\r\n│       └── ets                    # [ArkTS 目录] ArkTS/ETS 代码目录\r\n│           └── components         # [组件目录] 存放逻辑组件\r\n│               └── Permission     # [TS 模块] 权限逻辑文件夹\r\n│                   └── PermissionAction.ets # [ETS 文件] 权限操作的 ArkTS 实现\r\n├── www                            # [前端目录] 存放供 Web 端调用的 JS 接口文件\r\n│   ├── index.js                   # [JS 文件] 插件的主入口 JS 文件\r\n│   └── LICENSE                    # [许可证] 前端接口 index.js 的许可证文件\r\n├── .gitignore                     # [Git 配置] 指定 Git 版本控制中需要忽略的文件和目录\r\n├── LICENSE                        # [许可证] 项目根目录的开源协议或版权声明\r\n├── OAT.xml                        # [门禁配置] OHOS 系统的安全或权限配置文件\r\n├── package.json                   # [NPM 配置] 项目元数据，包含版本、依赖等信息\r\n├── plugin.xml                     # [Cordova 配置] 核心配置文件，定义插件结构和映射\r\n└── README.md                      # [说明文档] 项目的使用说明和功能介绍\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-permission/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-permission/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- **OHOS**：[https://gitcode.com/CPF-Cordova/cordova-plugin-permission](https://gitcode.com/CPF-Cordova/cordova-plugin-permission)\r\n\r\n- **Android、iOS 插件说明**：[https://www.npmjs.com/package/cordova-plugin-permission](https://www.npmjs.com/package/cordova-plugin-permission)\r\n","readmeFilename":"README.md"}