flutter 获取手机的权限---SD卡权限

flutter是跨平台的移动技术,当然也摆脱不了设备的授权问题,如android 设备中清单文件里的各种权限配置,以及到Android 6.0 的动态权限配置,Flutter也有相对应的功能要处理。接下来基于Android系统读写SD的权限做一个简单的讲解。(相关IOS的权限请自行查阅)
1.清单文件配置权限
找到Android模块的清单文件,配置对应的sd卡权限。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2.配置动态权限,现在Android手机设备几乎全都是6.0以上的系统,所以免不了要配置动态权限。在flutter中,我们使用permission_handler: ^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];
    });
  }

  • 根据权限的结果,执行相关逻辑
  @override
  Widget 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),
          )
        ],
      ),
    );
  }

最终效果图

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值