在Android 6.0中,你需要明确要求用户授权权限。仅在清单中声明是不够的。
这篇文章是学习新模型的好起点,但我会给出简要概述。
每次执行需要“危险权限”的操作时,都需要检查当前是否已授予该权限,因为用户可以随时撤销它。
可以使用checkSelfPermission
方法来完成此操作。
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
}
您可以使用requestPermissions
方法请求权限,如下所示
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE)
在回调方法中,您需要使用您定义的常量整数PERMISSION_READ_STATE
进行检查。
然后您将覆盖您的活动中的onRequestPermissionsResult
方法,并查看是否已授予该权限。 如果是,那么您可以继续执行危险操作。
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_READ_STATE: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
return;
}
}
}