hasPermission

关于动态权限:Android系统自6.0开始,提供了同IOS系统使用体验一致的动态权限机制:对于敏感权限,如获取手机ID | IMEI,访问相册存储,定位,录音,拍照,录像等,需要在APP运行过程中动态向用户申请,用户同意后方可使用相应的功能。

hasPermission提供动态检测应用是否已取得某个或多个权限;Android要求APP目标适配版本(targetSdkVersion)为23及以上(建议设置26及以上),为帮助您更好的使用该接口,论坛维护了一个示例;如何动态申请权限见requestPermission

注:该方法为同步方法,方法调用后直接返回结果。

权限列表中,类似contacts | contacts-r | contacts-w为权限组合,是为通配Android和IOS系统差异而设计:IOS系统无权限组的概念,向系统申请contacts权限时,系统会同时授予读取和写入权限;而Android则区分了读取和写入操作,可分别进行申请。因此建议在开发过程中,一般传入组合即可同时适配两个平台。如果Android上有特殊需求,例如仅需要读取联系人而不需要写入联系人权限,则应该使用contacts-r而不是contacts或contacts-w。无论contacts-r还是contacts-w,在IOS上均被识别为contacts。

hasPermission({params})

params

list:

  • 类型:字符串数组
  • 默认值:无
  • 描述:权限列表。
  • 取值范围:
  1. camera //相机/拍照/录像
  2. contacts //联系人读取/写入
  3. contacts-r //仅联系人读取
  4. contacts-w //仅联系人写入
  5. microphone //使用麦克风录制音频
  6. photos //访问相册|本地存储空间。Android上等同storage权限
  7. location //定位
  8. locationAlways //后台定位,只支持iOS
  9. notification //状态栏通知
  10. calendar //日历读取/写入。只支持Android
  11. calendar-r //仅日历读取
  12. calendar-w //仅日历写入
  13. phone //直接拨打电话/获取手机号码|IMEI。只支持Android
  14. phone-call //仅直接拨打电话
  15. phone-r //仅获取手机号码|IMEI
  16. phone-r-log //读取通话记录
  17. phone-w-log //写入通话记录
  18. sensor //传感器.只支持Android
  19. sms //读取短信/后台发送短信。只支持Android
  20. sms-s //仅后台发送短信
  21. sms-r //仅读取短信
  22. storage //读取/写入|相册|多媒体|本地存储空间。只支持Android
  23. storage-r //仅写入|相册|多媒体|文件|本地存储空间
  24. storage-w //仅读取|相册|多媒体|文件|本地存储空间

return

  • 类型:JSON对象数组
  • 内部字段:
  1. [{
  2. name: //权限名,字符串类型
  3. granted: //是否允许,如果从未请求过该权限或者用户未做出过选择时将返回false,布尔类型
  4. undetermined: //是否从未请求过该权限或者用户未做出过选择,只支持iOS,注意:请求notification权限时无法获取该状态,布尔类型
  5. }]

示例代码

  1. var resultList = api.hasPermission({
  2. list:['camera','contacts']
  3. });
  4. api.alert({
  5. msg:JSON.stringify(resultList)
  6. });

可用性

iOS系统,Android系统

可提供的1.2.76及更高版本