android 6.0以后动态申请多个危险权限笔记

本文介绍Android 6.0及更高版本中权限管理的变化,包括普通权限与危险权限的区别,以及如何通过代码动态申请多个危险权限,并提供了一个具体的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.0以后不仅在xml声明权限,还需要在运行代码中动态去声明。

1、权限分为普通权限和危险权限。如下是普通权限,不必动态声明。

1、ACCESS_LOCATION_EXTRA_COMMANDS

2、ACCESS_NETWORK_STATE

3、ACCESS_NOTIFICATION_POLICY

4、ACCESS_WIFI_STATEBLUETOOTH

5、BLUETOOTH_ADMIN

6、BROADCAST_STICKY

7、INTERNET
.
.
.
危险权限如下(可能不完整),需要动态申请
危险权限和权限组列表

2.下面是如何一次申请多个权限,代码如下

先声明一个保存多个权限的数组
//1、声明一个数据保存需要声明的权限
List<String> permissionList = new ArrayList<>();

 if (ContextCompat.checkSelfPermission(PersonCenter.this, Manifest.permission.WRITE_EXTERNAL_STORAGE
                ) != PackageManager.PERMISSION_GRANTED) {
                    permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
                   /* ActivityCompat.requestPermissions(PersonCenter.this,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);*/
                }
                if (ContextCompat.checkSelfPermission(PersonCenter.this, Manifest.permission.CAMERA) !=
                        PackageManager.PERMISSION_GRANTED) {
                    permissionList.add(Manifest.permission.CAMERA);
                }
                if (!permissionList.isEmpty()) {
                    String[] permissions = permissionList.toArray(new String[permissionList.size()]);
                    ActivityCompat.requestPermissions(PersonCenter.this,
                            permissions, 1);
                } else {
                   //执行需要权限的任务,一般封装成一个方法
                }

//权限回调
 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults.length >= 0) {
                    //getimg();
                } else {
                    Toast.makeText(getApplicationContext(), "你拒绝了读取SD的权限", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }

本文纯个人学习笔记,如有错误之处敬请留意纠正。跪谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itxiaolong3

打赏可以,但别打我就行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值