最近在做定位,有一种情况是系统设置里面的应用管理权限已经打开,但是第三方的安全中心里面应用的定位权限是关闭的,这时候checkSelfPermission依然是没有授权的,无法定位,前往系统设置也不顶用,用户也不见得知道手动去打开。该怎么处理?
将动态请求权限的代码封装成一个函数,在每一次应用启动的时候调用一次,我的代码如下:
private static final String[] PERMISSION_EXTERNAL_STORAGE = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
private static final int REQUEST_EXTERNAL_STORAGE = 100;
public void verifyStoragePermissions(Activity activity) {
int permissionWrite = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.SYSTEM_ALERT_WINDOW,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION}, 5);
}
if (permissionWrite != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, PERMISSION_EXTERNAL_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
// if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
// ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
// }
}