Android申请权限(相机权限和读写权限)

开发一个相机应用,需要申请三个权限:相机、读文件、写文件。

1、在AndroidManifest.xml中添加

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

2、新建一个Permission类

public class Permission {
    public static final int REQUEST_CODE = 5;
    //定义三个权限
    private static final String[] permission = new String[]{
            Manifest.permission.CAMERA,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
    };
    //每个权限是否已授
    public static boolean isPermissionGranted(Activity activity){
        if(Build.VERSION.SDK_INT >= 23){
            for(int i = 0; i < permission.length;i++) {  
                int checkPermission = ContextCompat.checkSelfPermission(activity,permission[i]);
                /***
                 * checkPermission返回两个值
                 * 有权限: PackageManager.PERMISSION_GRANTED
                 * 无权限: PackageManager.PERMISSION_DENIED
                 */
                if(checkPermission != PackageManager.PERMISSION_GRANTED){
                    return false;
                }
            }
            return true;
        }else{
            return true;
        }
    }

    public static boolean checkPermission(Activity activity){
        if(isPermissionGranted(activity)) {
            return true;
        } else {
            //如果没有设置过权限许可,则弹出系统的授权窗口
            ActivityCompat.requestPermissions(activity,permission,REQUEST_CODE);
            return false;
        }
    }
}

3、在MainActivity中加入授权操作

@Override
    protected void onStart() {
        super.onStart();
        Permission.checkPermission(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if(Permission.isPermissionGranted(this)) {
            Log.i("PERMISSION","请求权限成功");
        }
    }

初步授权成功

4、在MainActivity中处理授权失败结果,拒绝授权则退出应用

    @Override
    public void onRequestPermissionsResult(
            int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == Permission.REQUEST_CODE) {
            for (int grantResult : grantResults) {
                if (grantResult != PackageManager.PERMISSION_GRANTED) {
                    Log.e("Permission","授权失败!");
                    // 授权失败,退出应用
                    this.finish();
                    return;
                }
            }
        }
    }

效果图

1.jpg 2.jpg
  • 20
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android 12中,应用程序的读写权限得到了一些改进和更新。首先,为了保护用户的隐私和数据安全,Android 12引入了更严格的权限控制。在安装应用程序时,用户将收到更详细的权限请求对话框,显示了应用程序所需的各种权限,并允许用户选择是否授予这些权限。 此外,Android 12还引入了Scoped Storage,这是一种更安全和更可靠的文件访问机制。Scoped Storage限制了应用程序对外部存储的直接访问,只允许应用程序访问其私有目录和特定共享目录。这意味着应用程序无法直接访问其他应用程序的私有目录或外部存储中的任何文件。这种限制可以防止应用程序访问和读取其他应用程序的敏感数据,提高了隐私保护和数据安全性。 此外,Android 12还改进了用户授权的流程和体验。在应用程序请求权限时,用户可以通过更直观和易于理解的界面来控制和管理其权限。用户可以选择在某些情况下临时授予应用程序权限,例如给予相机应用程序单次访问相机权限。这种改进可以更好地保护用户的隐私,确保应用程序只在必要时才能访问所需的权限。 总体而言,Android 12对应用程序的读写权限进行了改进和增强,以提高用户的隐私保护和数据安全性。通过更详细的权限请求对话框、Scoped Storage和改进的用户授权流程,Android 12确保了应用程序只能在合适的情况下访问所需的权限,并防止应用程序读取其他应用程序的敏感数据。这些改进为用户提供了更可靠和更安全的应用程序体验。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值