@ionic-native-ohos/android-permissions
v5.36.0
Published
Ionic Native - Native android-permissions Plugin
Readme
@ionic-native/android-permissions
本项目基于@ionic-native/[email protected]开发。
简介
@ionic-native/android-permissions专为Android平台设计的Cordova权限管理插件,专注于解决Android6.0(API23)及以上版本的动态权限申请、权限状态检查与系统权限管理问题。提供简洁易用的API接口,覆盖Android系统所有危险权限的管理场景,帮助开发者快速实现合规的权限控制逻辑,保障应用在Android不同版本下的功能稳定性与安全性。
支持平台
- OpenHarmony:5.0+
下载安装
通过命令行或手动引入即可快速安装插件,支持从npm仓库获取。
命令行安装(推荐)
安装hionic CLI:
npm install -g hionic以下两种方式中任选其一即可,无需重复操作:
npm安装:
# 安装插件
npm install @ionic-native/android-permissions
# 同步插件
hionic synchionic CLI安装:
hionic plugin add @ionic-native/android-permissions手动引入安装
1. 添加插件配置
根据 plugin.xml 的 config-json 项,找到 entry 模块中 config.xml 文件,并根据 param 标签添加配置
<feature name="Permissions">
<param name="harmony-package" value="Permissions"/>
<param name="onload" value="true"/>
</feature>2. 修改CMake配置
根据 plugin.xml 的 CMakeLists 项,找到 cordova 模块,路径为 target 字段的文件 CMakeLists.txt,添加 add_library
add_library(cordova SHARED
# ...
Permissions/Permissions.cpp
# ...
)3. 复制源码文件
根据 plugin.xml 的 source-file 项,将 src 字段的路径代码复制到 cordova 模块中 target-dir 字段的目录中:
将源码中src/main/cpp/Permissions目录下的Permissions.h、Permissions.cpp文件引入到cordova模块中src/main/cpp/Permissions目录下。
卸载
# hionic CLI 卸载
hionic plugin remove @ionic-native/android-permissions约束与限制
兼容性
在以下版本中已测试通过:
- SDK: 5.0.5(17); IDE: DevEco Studio: 6.0.0; ROM: 5.1.0.150;
权限要求
不涉及
核心API
接口方法
| 方法名 | 请求参数 | 返回类型 | 描述 |
|------|------|------|------|
| checkPermission(...) | checkPermission(permissions, successCallback, errorCallback) | Promise<void> | 检查权限 |
| requestPermission(...) | requestPermission(permission, successCallback, errorCallback) | Promise<void> | 请求单个权限 |
| requestPermissions(...) | requestPermissions(permissions, successCallback, errorCallback) | Promise<void> | 请求多个权限 |
核心常量
插件内置所有Android权限的常量,可直接通过 cordova.plugins.permissions.[常量名] 访问,注意:仅支持 OpenHarmony部分常用权限常量 推荐您直接使用OpenHarmony权限字符串,原Android的权限常量已更换为常用的OpenHarmony常量,在Android项目移植时,请检查您的权限名称。
OpenHarmony权限参考连接权限列表
支持的常量列表
| Android 权限 | OpenHarmony 权限 | |------------|----------------| | ACCESS_COARSE_LOCATION | ohos.permission.LOCATION | | ACCESS_FINE_LOCATION | ohos.permission.LOCATION | | ACCESS_LOCATION_EXTRA_COMMANDS | ohos.permission.LOCATION | | ACCESS_NETWORK_STATE | ohos.permission.GET_NETWORK_INFO | | ACCESS_WIFI_STATE | ohos.permission.GET_WIFI_INFO | | CHANGE_NETWORK_STATE | ohos.permission.SET_NETWORK_INFO | | CHANGE_WIFI_STATE | ohos.permission.MANAGE_WIFI_CONNECTION | | CHANGE_WIFI_MULTICAST_STATE | ohos.permission.MANAGE_WIFI_CONNECTION | | CAMERA | ohos.permission.CAMERA | | RECORD_AUDIO | ohos.permission.MICROPHONE | | READ_EXTERNAL_STORAGE | ohos.permission.READ_USER_STORAGE | | WRITE_EXTERNAL_STORAGE | ohos.permission.WRITE_USER_STORAGE | | READ_CONTACTS | ohos.permission.READ_CONTACTS | | WRITE_CONTACTS | ohos.permission.WRITE_CONTACTS | | READ_CALENDAR | ohos.permission.READ_CALENDAR | | WRITE_CALENDAR | ohos.permission.WRITE_CALENDAR | | READ_PHONE_STATE | ohos.permission.GET_TELEPHONY_STATE | | CALL_PHONE | ohos.permission.PLACE_CALL | | READ_CALL_LOG | ohos.permission.READ_CALL_LOG | | WRITE_CALL_LOG | ohos.permission.WRITE_CALL_LOG | | PROCESS_OUTGOING_CALLS | ohos.permission.PLACE_CALL | | BODY_SENSORS | ohos.permission.HEALTH_DATA | | READ_SMS | ohos.permission.RECEIVE_SMS | | SEND_SMS | ohos.permission.SEND_MESSAGES | | RECEIVE_SMS | ohos.permission.RECEIVE_SMS | | RECEIVE_MMS | ohos.permission.RECEIVE_MMS | | INTERNET | ohos.permission.INTERNET | | BLUETOOTH | ohos.permission.MANAGE_BLUETOOTH | | BLUETOOTH_ADMIN | ohos.permission.MANAGE_BLUETOOTH | | NFC | ohos.permission.NFC | | VIBRATE | ohos.permission.VIBRATE | | WAKE_LOCK | ohos.permission.KEEP_BACKGROUND_RUNNING | | GET_ACCOUNTS | ohos.permission.READ_ACCOUNTS | | MANAGE_ACCOUNTS | ohos.permission.MANAGE_ACCOUNTS | | AUTHENTICATE_ACCOUNTS | ohos.permission.ACCOUNT_AUTH | | BATTERY_STATS | ohos.permission.BATTERY_STATS | | BIND_ACCESSIBILITY_SERVICE | ohos.permission.ACCESS_ACCESSIBILITY | | BIND_DEVICE_ADMIN | ohos.permission.MANAGE_DEVICE_ADMIN | | BIND_VPN_SERVICE | ohos.permission.MANAGE_VPN | | BLUETOOTH_PRIVILEGED | ohos.permission.MANAGE_BLUETOOTH | | CAPTURE_AUDIO_OUTPUT | ohos.permission.MICROPHONE | | CAPTURE_VIDEO_OUTPUT | ohos.permission.CAMERA | | CLEAR_APP_CACHE | ohos.permission.CLEAN_APPLICATION_DATA | | DELETE_PACKAGES | ohos.permission.INSTALL_BUNDLE | | DISABLE_KEYGUARD | ohos.permission.MANAGE_SECURE_SETTINGS | | EXPAND_STATUS_BAR | ohos.permission.SYSTEM_FLOAT_WINDOW | | GET_TASKS | ohos.permission.GET_RUNNING_INFO | | INSTALL_PACKAGES | ohos.permission.INSTALL_BUNDLE | | KILL_BACKGROUND_PROCESSES | ohos.permission.CLEAN_BACKGROUND_PROCESSES | | MODIFY_AUDIO_SETTINGS | ohos.permission.MODIFY_AUDIO_SETTINGS | | MOUNT_UNMOUNT_FILESYSTEMS | ohos.permission.MOUNT_UNMOUNT_MANAGER | | READ_LOGS | ohos.permission.READ_LOGS | | READ_PROFILE | ohos.permission.READ_CONTACTS | | REBOOT | ohos.permission.REBOOT | | RECEIVE_BOOT_COMPLETED | ohos.permission.RECEIVE_BOOT_COMPLETED | | SET_ALARM | ohos.permission.SET_ALARM | | SET_TIME | ohos.permission.SET_TIME | | SET_TIME_ZONE | ohos.permission.SET_TIME_ZONE | | SET_WALLPAPER | ohos.permission.SET_WALLPAPER | | STATUS_BAR | ohos.permission.SYSTEM_FLOAT_WINDOW | | SYSTEM_ALERT_WINDOW | ohos.permission.SYSTEM_FLOAT_WINDOW | | USE_SIP | ohos.permission.USE_SIP | | WRITE_SECURE_SETTINGS | ohos.permission.MANAGE_SECURE_SETTINGS | | WRITE_SETTINGS | ohos.permission.MANAGE_SYSTEM_SETTINGS | | DISTRIBUTED_DATASYNC | ohos.permission.DISTRIBUTED_DATASYNC | | ACCESS_BIOMETRIC | ohos.permission.ACCESS_BIOMETRIC | | ACCESS_FACE_RECOGNITION | ohos.permission.ACCESS_FACE_RECOGNITION | | ACCESS_FINGERPRINT | ohos.permission.ACCESS_FINGERPRINT | | ACTIVITY_MOTION | ohos.permission.ACTIVITY_MOTION | | READ_HEALTH_DATA | ohos.permission.READ_HEALTH_DATA | | BIND_INPUT_METHOD | ohos.permission.MANAGE_INPUT_METHOD | | BIND_NFC_SERVICE | ohos.permission.NFC | | BIND_NOTIFICATION_LISTENER_SERVICE | ohos.permission.NOTIFICATION_CONTROLLER |
使用示例
示例 1:检查权限状态
实现检查权限状态的功能。
function checkPermission() {
var permissions = [cordova.plugins.permissions.ACCESS_LOCATION_EXTRA_COMMANDS, cordova.plugins.permissions.ACCESS_COARSE_LOCATION];
// 直接使用 OpenHarmony 权限名称
// var permissions = ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'];
cordova.plugins.permissions.checkPermission(permissions, function(result) {
document.getElementById("checkPermissionInfo").innerHTML = JSON.stringify(result);
if (result.hasPermission) {
// 具备权限
}
}, function() {
})
}示例 2:申请单个权限
实现申请单个权限的功能。
function requestPermission() {
var permissions = 'ohos.permission.APPROXIMATELY_LOCATION';
cordova.plugins.permissions.requestPermission(permissions, function(result) {
document.getElementById("requestPermissionInfo").innerHTML = JSON.stringify(result);
if (result.hasPermission) {
// 具备权限
}
}, function() {
// 不具备该权限
})
}示例 3:申请多个权限
实现申请多个权限的功能,适用于需要同时申请多个权限的场景(如 "相机 + 存储" 权限)。
function requestPermissions() {
var permissions = ['ohos.permission.APPROXIMATELY_LOCATION', 'ohos.permission.LOCATION'];
cordova.plugins.permissions.requestPermissions(permissions, function(result) {
document.getElementById("requestPermissionInfos").innerHTML = JSON.stringify(result);
if (result.hasPermission) {
// 具备权限
}
}, function() {
// 不具备该权限
})
}使用说明
插件在全局对象 cordova.plugins.permissions 下暴露所有功能接口,使用前需确保设备就绪事件(deviceready)已触发。
1. 检查权限
检查指定权限的状态。
方法签名
cordova.plugins.permissions.checkPermission(permissions, successCallback, errorCallback)2. 请求单个权限
请求单个权限。
方法签名
cordova.plugins.permissions.requestPermission(permission, successCallback, errorCallback)3. 请求多个权限
请求多个权限。
方法签名
cordova.plugins.permissions.requestPermissions(permissions, successCallback, errorCallback)目录结构
|---- 目录
| |---- src/main # 插件的实现代码
| |---- cpp # C++ 代码
| |---- ets # ArkTS 代码
| |---- www # Web 侧代码
| |---- README.md # 说明文档
| |---- package.json # 配置文件
| |---- plugin.xml # 插件配置文件贡献代码
使用过程中发现任何问题都可以提Issue,当然,也非常欢迎发PR共建。
许可证
本插件基于MIT License开源,详见LICENSE文件。
