Uniapp 最简权限插件(解决权限相关API在权限拒绝的情况下调用时无反应)

1,515 阅读2分钟

PermissionsPlugin

简介

易用好用的权限插件,只需调用一个方法,返回true的结果后做自己业务,其他的都不用管都不用管都不用管...

未确认情况下会主动帮你申请权限,权限被拒绝或被限制会主动引导用户跳转应用权限去打开 image.png image.png image.png image.png image.png

使用示例

复制代码// 引用插件
const permissionsModule = uni.requireNativePlugin("Chen-PermissionsModule")

// 调用插件方法
permissionsModule.checkPermissions(options,(result) => {
  if (result) {
    // 只需返回true的结果后做自己业务 其他的都不用管
  }
}

属性说明

属性名类型说明
optionsString需要处理的权限名
resultBoolean返回值(已授权/被拒绝、被限制、未知)
options参数说明:
相关权限名对应权限参数
相机权限camera
相册权限photo
麦克风权限audio
定位权限location
网络权限network
蓝牙权限bluetooth
推送权限push
通讯录权限contacts
日历权限calendar
通话权限call_phone
短信权限sms

权限配置

1.Android

manifest.json/App权限配置/Android权限配置表中,根据需求进行勾选

复制代码<!-- 存储 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 相机 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 录音 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 推送 -->
<uses-permission android:name="android.permission.BROADCAST_WAP_PUSH"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<!-- 蓝牙 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- 通讯录 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- 日历 -->
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<!-- 拨打电话 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- 短信 -->
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
1.IOS

manifest.json/App权限配置/ios隐私访问的许可描述,根据需求进行配置

权限配置中有些权限没有,插件中所需要的已有权限如下

复制代码<!-- 相册 -->
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<!-- 相机 -->
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能访问相机</string>
<!-- 麦克风 -->
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能访问麦克风</string>
<!-- 位置 -->
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<!-- 在使用期间访问位置 -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期间访问位置</string>
<!-- 始终访问位置 -->
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始终访问位置</string>
<!-- 网络 -->
<key>NSLocalNetworkUsageDescription</key>
<string>App需要您的同意,才能访问网络</string>
<!-- 蓝牙 -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能访问蓝牙</string>
<!-- 通讯录 -->
<key>NSContactsUsageDescription</key>
<string>App需要您的同意,才能访问通讯录</string>
<!-- 日历 -->
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能访问日历</string>

插件地址