【Flutter 问题系列第 48 篇】Flutter 获取手机权限插件 permission_handle 都支持哪些权限

马丰
2023-12-01

这是【Flutter 问题系列第 48 篇】,如果觉得有用的话,欢迎关注专栏。

如果想在 Flutter 中动态获取系统权限,可以使用插件 permission_handle,这里以 permission_handle 8.1.4+2 为例,说下该插件支持的权限有哪些。

注:表格中的 ✔ 代表当前平台支持该权限,✗ 代表当前平台不支持该权限,- 代表该权限在当前平台不做任何处理。

表格中被标注红色的权限是需要你特别去注意的,具体详情在本文最后。

permission_handle 插件支持权限详情

序号权限名称解释说明AndroidiOS
1calendar日历
2camera相机
3contacts联系人
4location访问位置
5locationAlways总是允许访问位置
6locationWhenInUse仅在使用中允许访问位置
7mediaLibrary媒体库
8microphone麦克风
9phone电话-
10photos照片-
11photosAddOnly仅添加照片-
12reminders提醒-
13sensors传感器
14sms短信-
15speech语音
16storage存储
17ignoreBatteryOptimizations忽略电池优化
18notification通知
19accessMediaLocation访问媒体位置
20activityRecognition活动(运动)识别-
21unknown未知
22bluetooth蓝牙

特别注意事项

一:针对权限 locationAlways (总是允许访问位置)

  • Android:当安卓版本小于 Android 10 时,获取的是粗略的位置,在 Android 10 或者更高版本时获取的是后台位置权限。

二:针对权限 photosAddOnly(仅添加照片)

  • 在 ios 14 或更高版本上有访问级别。

三:针对权限 activityRecognition(活动/运动)

  • 在 Android 10 或更高版本时,需要申请访问活动/运动权限,在 Android 10 以下的版本可以直接获取到活动/运动权限,不需要去申请。

当时做了一个计步功能,我自己测试机可以获取到当前走的步数,交给测试人员时没有起到作用,后来排查才知道,我的测试机是 Android 9 所以没有问题,测试人员的是 Android 11,因为我并没有写获取活动/运动的权限,所以测试人员的有了问题,也给大家长个心吧。

四:针对权限 bluetooth (蓝牙)

  • Android 允许一直访问
  • 在 ios 13 或更高版本需要获取蓝牙权限,ios 13 以下的可以一直访问。

文章内容是参考插件源码翻译的,如果存在不对的地方,还望各位大神指出。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
 类似资料: