flutter 获取手机的权限---SD卡权限
是跨平台的移动技术,当然也摆脱不了设备的授权问题,如 设备中清单文件里的各种权限配置,以及到 6.0 的动态权限配置,也有相对应的功能要处理。接下来基于系统读写SD的权限做一个简单的讲解。(相关IOS的权限请自行查阅)
1.清单文件配置权限
找到模块的清单文件,配置对应的sd卡权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.配置动态权限,现在手机设备几乎全都是6.0以上的系统,所以免不了要配置动态权限。在中,我们使用: ^3.2.0 插件给大家演示效果。动态权限也分为几个部分;
/*** 检查是否有相关权限*/void checkPermissionStatus() {final Future<PermissionStatus> statusFuture =PermissionHandler().checkPermissionStatus(PermissionGroup.storage);statusFuture.then((PermissionStatus status) {setState(() {_permissionStatus = status;});});}
/*** 请求系统权限,让用户确认授权*/Future requestPermission() async {List<PermissionGroup> permissions = <PermissionGroup>[PermissionGroup.storage];Map<PermissionGroup, PermissionStatus> permissionMap =await PermissionHandler().requestPermissions(permissions);setState(() {_permissionStatus = permissionMap[PermissionGroup.storage];});}
@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("检查读写SD卡权限"),),body: Column(children: <Widget>[RaisedButton(child: Text("检查是否拥有权限--读写外部卡"),onPressed: checkPermissionStatus,),Text("检查权限结果:" + hasPermissionText(_permissionStatus),),RaisedButton(child: Text("请求权限"),onPressed: requestPermission,),Text("获取权限结果:" + getPermissionResult(_permissionStatus),)],),);}