更新记录

1.0.1(2025-02-04)

更新Demo工程

1.0.0(2025-02-04)

适配Android、iOS和HarmonyOS Next


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.44,Android:9.0,iOS:12,HarmonyNext:支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

permission-handler

介绍

permission-handler-plus 是一款支持iOS/Android/HarmonyOS 的权限申请插件

免费版permission-handler(不支持HarmonyOS Next)

使用方法

import {
    checkPermission, requestPermissions
} from '@/uni_modules/permission-handler';

requestLocation() {
    checkPermission('Location', (result) => {
        console.log(result)
        if (result == "denied") {
            requestPermissions({
                names: ['Location'],
                success: (result) => {
                    console.log(result)
                },
                fail:(error) => {
                    console.log(error)
                }
            })
        }
    })
}

参数及结果说明:

权限状态说明

PermissionStatus: string

状态 iOS Android HarmonyOS Next
denied 用户拒绝访问所请求的功能,需要先请求权限。 用户拒绝访问所请求的功能,需要先请求权限。 用户拒绝访问所请求的功能,需要先请求权限。
granted 用户授予了所请求功能的访问权限。 用户授予了所请求功能的访问权限。 用户授予了所请求功能的访问权限。
restricted 操作系统拒绝访问所请求的功能,可能是由于启用了家长控制等活动限制。 不适用。 表示请求无效,可能原因有:
-未在设置文件中声明目标权限。
-权限名非法。
-部分权限存在特殊申请条件,在申请对应权限时未满足其指定的条件
limited 用户已授权此应用程序进行有限访问(仅支持 iOS 14+)。 用户已授权此应用程序进行有限访问(仅支持 Android 14+)。 不适用。
permanentlyDenied 用户拒绝权限,并选择不再显示权限对话框。
用户可在设置中更改权限状态。
Android 11+:用户第二次拒绝权限。
Android 11 以下:用户拒绝并选择不再显示请求。
不适用。
provisional 应用程序被临时授权发送非打扰性用户通知(仅支持 iOS 12+)。 不适用。 不适用。

权限列表说明

name: string

状态 iOS Android HarmonyOS Next
Calendar 日历(事件) 日历 日历(读)
Camera 照片(相机胶卷和摄像头) 摄像头 摄像头
Contacts 通讯录 通讯录 通讯录(读)
Location CoreLocation(始终和使用时) 精确位置和模糊位置 精确位置,需先申请模糊位置(ProximatelyLocation)
LocationAlways CoreLocation - 始终 Android 10+: 后台位置权限
Android 10以下: 精确位置和模糊位置权限
后台位置,需同时申请模糊位置和精确位置(ProximatelyLocation,Location)
LocationWhenInUse CoreLocation - 使用时 精确位置和模糊位置 不适用
MediaLibrary 媒体库(仅支持 iOS 9.3+) 不适用 媒体库(读)
API 12以后废弃
Microphone 麦克风 麦克风 麦克风
Phone 不适用 电话状态 不适用
Photos 照片(iOS 14+ 提供读写访问级别) Android 13+: photos
Android 12以下: storage
不适用
PhotosAddOnly 照片(仅限添加,iOS 14+ 提供读写访问级别) 不适用 不适用
Reminders 提醒事项 不适用 不适用
Sensors CoreMotion 身体传感器 不适用
Sms 不适用 发送和读取短信(仅限 Android) 不适用
Speech 语音识别(与麦克风权限不同) 语音识别(与麦克风权限相同) 不适用
Storage 默认隐式授予(访问 Documents 或 Downloads 文件夹) Android 13+: 替代为 photosvideo
Android 12以下: 读写外部存储权限
不适用
IgnoreBatteryOptimizations 不适用 忽略电池优化(仅限 Android) 不适用
Notification 推送通知 推送通知 不适用
AccessMediaLocation 不适用 Android 10+(API 29+):访问共享媒体中的地理位置 访问用户媒体文件中的地理位置信息
ActivityRecognition 不适用 Android 10+(API 29+):活动信息 活动信息
Bluetooth Core Bluetooth 授权状态(iOS 13+) 总是允许 蓝牙授权状态
ManageExternalStorage 不适用 Android 11+(API 30+):广泛访问分区存储中的文件 不适用
SystemAlertWindow 不适用 创建覆盖所有应用的窗口(仅限 Android) 不适用
RequestInstallPackages 不适用 安装包的权限(Android Marshmallow+) 不适用
AppTrackingTransparency 应用跟踪状态,广告标识符 不适用 应用读取开放匿名设备标识符(广告标识符)。
CriticalAlerts 关键通知 不适用 不适用
AccessNotificationPolicy 不适用 访问通知策略(Android Marshmallow+) 不适用
BluetoothScan 不适用 扫描蓝牙设备(Android 12+) 不适用
BluetoothAdvertise 不适用 广播蓝牙设备(Android 12+) 不适用
BluetoothConnect 不适用 连接蓝牙设备(Android 12+) 不适用
NearbyWifiDevices 不适用 通过 Wi-Fi 连接附近设备(Android 13+) 星闪链接附近设备
Videos 不适用 访问外部存储的视频文件(Android 13+) 不适用
Audio 不适用 访问外部存储的音频文件(Android 13+) 读取用户公共目录的音频文件
ScheduleExactAlarm 不适用 调度精确闹钟(Android 12+) 不适用
SensorsAlways 不适用 后台访问设备传感器(Android 13+) 不适用
CalendarWriteOnly 写入日历(与 CalendarFullAccess 相同,仅限 iOS 16 以下) 不适用 日历(写)
CalendarFullAccess 读写日历 日历 不适用
Assistant SiriKit 无操作 不适用
BackgroundRefresh 读取后台刷新状态 不适用 不适用
MediaLibraryAddOnly 不适用 不适用 媒体库(写)
API 12以后废弃
ImageVideoRead 不适用 不适用 读取用户公共目录的图片或视频文件
ImageVideoWrite 不适用 不适用 修改用户公共目录的图片或视频文件
AudioAddOnly 不适用 不适用 修改用户公共目录的音频文件
Pasteboard 不适用 不适用 应用读取剪贴板。
DistributeDataSync 不适用 不适用 不同设备间的数据交换
ProximatelyLocation 不适用 不适用 获取设备模糊位置信息。
HealthData 不适用 不适用 读取用户的健康数据
DownloadDirectory 不适用 不适用 访问公共目录下Download目录及子目录
DocumentDirectory 不适用 不适用 访问公共目录下的Documents目录及子目录

请求权限 requestPermissions

/// 请求权限
requestPermissions({
    names: ['Location', 'Calendar'],
    success: (result) => {
        /// 请求结果
        /// result: {
        ///     'Location' : 'granted',
        ///     'Calendar' : 'denied'
        /// }
        console.log(result)
    },
    fail:(error) => {
        /// 请求异常
        /// error: {
        ///     'code' : '错误码',
        ///     'msg' : '错误原因'
        /// }
        console.log(error)
    }
})

注意

  1. 为了不影响应用上架应用商店,插件自身不添加配置任何权限,应用使用到哪些权限就在项目的manifest.json中配置哪些权限,不使用尽量不添加
  2. 真机调试 HbuilderX 需要配置各平台运行环境配置
  3. 真机调试Android需要自定义基座,除了基座自带权限,添加新的权限后调试需要重新打包新基座,否则相当于没有配置权限,iOS不需要自定义基座
  4. Android targetSDK 请设置不低于28
  5. HarmonyOS Next 权限与iOS和Android相比差别更大一些,很多权限只需声明不需要动态申请,如Notification等,并且对用户访问数据权限控制更严格如剪切板、本地文件、通讯录等,需要在开发平台下配置或者审核才能够正常使用,详情参考HarmonyOS Next 应用权限管控
  6. 未配置权限会直接返回denied

隐私、权限声明

1. 本插件需要申请的系统权限列表:

根据需要自行添加,所有支持权限在.README.md中有

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问