在运行时获取权限时,有时候会因为某些原因而导致无法正确工作。其中之一是因为在运行时获取权限后无法正确处理回调。这时我们可以按照以下步骤重新请求权限:
首先,在manifest文件中声明所需权限。
添加一个函数用来检查权限:
private final int REQUEST_CODE_PERMISSION=1000;
private void requestPermission(){
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_PHONE_STATE},
REQUEST_CODE_PERMISSION);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CODE_PERMISSION) {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//权限请求成功
} else {
// 权限请求失败
}
}
}
在这样处理之后,我们重新请求权限就能够得到正确的结果了。