android api23没有 requestpermissions,API23以上的运行时权限

本文介绍了Android从6.0开始引入的运行时权限机制,旨在增强用户隐私安全。在API23及以上版本,应用需要在运行时动态申请危险权限,如读写外部存储等。若用户拒绝权限,应用通常不会立即退出。权限分为普通权限和危险权限,其中危险权限涉及用户隐私,需按需申请。申请权限时,如果用户拒绝,开发者可以选择提供备选功能或提示用户手动开启。
摘要由CSDN通过智能技术生成

Android的权限机制从第一个版本就有了,一些软件,不管用不用的到这些权限,都先申请了再说。比如某企鹅,安装软件时可以看到它要了读取和发送信息的权限,嘿嘿嘿,话说要这权限干嘛,。。。。

然后Android针对这些问题,在Android 6.0(API23)时安卓加入了运行时权限,从而更好的保护了用户的隐私安全。

就是用户不需要再安装软件的的时候一次性授权所有的权限,而是在软件使用过程中针对某一些权限进行申请,当然,一般情况下,拒绝权限不会退出程序(万恶的某博,不给手机通讯录打电话权限就退出),而是可以用别的功能。

并不是所有的权限都要在运行时申请,这样得多麻烦。Android将权限分为了两类,1 普通权限,2 危险权限

普通权限就是说不会直接威胁到用户的安全和隐私。这些权限系统会自动授权,只要你声明了。

危险权限就是涉及用户隐私的。这些就要运行时动态申请了

普通权限和危险权限

Android系统有上百种权限,危险权限如下表,其他的就是普通权限了

9ea71e6d15b0

危险权限和权限组

需要注意的是

表格中每个权限都属于一个权限组,要是申请了权限组的一个权限,那么该权限组的所有权限都会同时被授权。比如,申请了WRITE_EXTERNAL_STORAGE这个权限,那么和它在同一权限组的READ_EXTERNAL_STORAGE也会同时被授权!

不在这张表的权限可以直接在manifest文件里声明就行了(API23以上),不过平时为了兼容低版本,任何权限都要声明在manifest文件里,然后在Activity中针对API23以上申请运行时权限

动态申请运行时权限

一般情况下,比如,申请读写内存卡权限

Manifest.permission.WRITE_EXTERNAL_STORAGE

在Activity的onCreate里

//判断权限够不够,不够就给

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.this, new String[]{

Manifest.permission.WRITE_EXTERNAL_STORAGE

}, 1);

} else {

//权限够了这里处理逻辑

Log.d(TAG, "权限够了");

}

Activity里加上回调,控制权限申请窗口弹出来的的逻辑

//获取到权限回调方法

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[]permissions, @NonNull int[] grantResults) {

switch (requestCode) {

case 1:

if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

//权限够了处理逻辑

Log.d(TAG, "权限够了,逻辑");

} else {

Toast.makeText(this, "权限不够,程序将退出", Toast.LENGTH_SHORT).show();

finish();

}

break;

default:

break;

}

}

声明权限

然后运行,点击拒绝就直接finish()了

9ea71e6d15b0

Gradle集成

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值