安卓请求权限

有时候我们的应用需要读写sd卡,就需要android.permission.WRITE_EXTERNAL_STORAGE权限,但是它属于危险型权限。光在Manifest中配置还不够,你还需要运行时请求去用它们。
以下就以Mainfest.permission.WRITE_EXTERNAL_STORAGE为例,

1)检测是否拥有权限

《安卓请求权限》 image.png

2)如果没有权限就请求权限

《安卓请求权限》 image.png

requestPermission()是个异步请求方法,调用它之后,Android会弹出系统权限授权对话框要求用户反馈。
为响应用户操作,还需要重写onRequestPermissionResult()响应方法,用户点击 允许 或 拒绝 按钮后,Android就会调用这个方法。

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 0: {                                          //这个0是requestCode,上面requestPermissions有用到
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(getActivity(), "已获取权限,可以保存图片", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getActivity(), "您拒绝了写文件权限,无法保存图片", Toast.LENGTH_SHORT).show();
                }
                return;
            }
        }
    }

然后我们在这个方法里检测是否拥有权限,如果有权限,就…。

如果你点击了 允许 按钮给予权限,除非卸载或关闭权限,应用会一直拥有该权限。如果选了拒绝,应用的授权只是暂时被否。下次要获取读写文件的话,可以继续用requestPermission()来请求权限。

    原文作者:2fab4u
    原文地址: https://www.jianshu.com/p/a5d184807b53
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞