在运行时获取权限时,有时候会因为某些原因而导致无法正确工作。其中之一是因为在运行时获取权限后无法正确处理回调。这时我们可以按照以下步骤重新请求权限:
首先,在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 {
            // 权限请求失败
        }
    }
}
在这样处理之后,我们重新请求权限就能够得到正确的结果了。