这是【Flutter 问题系列第 48 篇】,如果觉得有用的话,欢迎关注专栏。
如果想在 Flutter 中动态获取系统权限,可以使用插件 permission_handle
,这里以 permission_handle 8.1.4+2 为例,说下该插件支持的权限有哪些。
注:表格中的 ✔ 代表当前平台支持该权限,✗ 代表当前平台不支持该权限,- 代表该权限在当前平台不做任何处理。
表格中被标注红色的权限是需要你特别去注意的,具体详情在本文最后。
序号 | 权限名称 | 解释说明 | Android | iOS |
---|---|---|---|---|
1 | calendar | 日历 | ✔ | ✔ |
2 | camera | 相机 | ✔ | ✔ |
3 | contacts | 联系人 | ✔ | ✔ |
4 | location | 访问位置 | ✔ | ✔ |
5 | locationAlways | 总是允许访问位置 | ✔ | ✔ |
6 | locationWhenInUse | 仅在使用中允许访问位置 | ✔ | ✔ |
7 | mediaLibrary | 媒体库 | ✗ | ✔ |
8 | microphone | 麦克风 | ✔ | ✔ |
9 | phone | 电话 | ✔ | - |
10 | photos | 照片 | - | ✔ |
11 | photosAddOnly | 仅添加照片 | - | ✔ |
12 | reminders | 提醒 | - | ✔ |
13 | sensors | 传感器 | ✔ | ✔ |
14 | sms | 短信 | ✔ | - |
15 | speech | 语音 | ✔ | ✔ |
16 | storage | 存储 | ✔ | ✔ |
17 | ignoreBatteryOptimizations | 忽略电池优化 | ✔ | ✗ |
18 | notification | 通知 | ✔ | ✔ |
19 | accessMediaLocation | 访问媒体位置 | ✔ | ✗ |
20 | activityRecognition | 活动(运动)识别 | ✔ | - |
21 | unknown | 未知 | ✔ | ✔ |
22 | bluetooth | 蓝牙 | ✔ | ✔ |
特别注意事项
一:针对权限 locationAlways
(总是允许访问位置)
二:针对权限 photosAddOnly
(仅添加照片)
三:针对权限 activityRecognition
(活动/运动)
当时做了一个计步功能,我自己测试机可以获取到当前走的步数,交给测试人员时没有起到作用,后来排查才知道,我的测试机是 Android 9 所以没有问题,测试人员的是 Android 11,因为我并没有写获取活动/运动的权限,所以测试人员的有了问题,也给大家长个心吧。
四:针对权限 bluetooth
(蓝牙)
文章内容是参考插件源码翻译的,如果存在不对的地方,还望各位大神指出。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
结束语
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。