简介
Android 的权限机制是用来保护用户安全以及隐私,但是在 6.0 之前这些权限都只能在安装的时候申请,如果不同意的话就不安装应用。
但是这样会造成有一些 app 的用户很多,并且用户对此类 app 依赖度高,这些 app 会在安装的时候申请很多的权限,但其实只是想窃取用户更多的信息。
Android 6.0 系统引进运行时权限这个功能,能够使得 app 不需要在安装的时候申请过多的权限。
在运行时申请权限
以打电话为例子
在 AndroidManifest.xml 声明权限
<uses-permission android:name="android.permission.CALL_PHONE" />
在程序运行中检查并申请权限
//判断是否授权
if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE) !=
PackageManager.PERMISSION_GRANTED) {
//请求授权
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CALL_PHONE}, 1);
}else {
call();
}
重写 onRequestPermissionsResult 函数获取授权结果
@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) {
call();
}else {
Toast.makeText(this, "You denied the permission",
Toast.LENGTH_SHORT).show();
}
break;
default:break;
}
}