动态申请权限
在onCreate方法中使用这段代码进行判断
//对sdk版本进行判断
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
//检查有没有这个权限
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) {
//申请权限,permissions是要申请的权限数组
ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_CODE);
}
}
或者也可以像下面这样
//判断是否有权限READ_PHONE_NUMBERS、READ_PHONE_STATE、READ_SMS
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
//没有权限就申请权限
ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_CODE);
}
使用回调函数输出申请权限的结果
/**
* 权限申请回调函数,
* @param requestCode 请求码
* @param permissions 刚刚请求的权限集
* @param grantResults 请求结果,0表示授权成功,-1表示授权失败
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PERMISSION_CODE) {
for (int i = 0; i < permissions.length; i++) {
Log.i("MainActivity", "申请的权限为:" + permissions[i] + ",申请结果:" + grantResults[i]);
}
}
}