如何检查应用程序是否有ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION和其他低



是否有办法检查我的设备是否已经具有以下一行权限,或者我应该如何检查这一点?

我支持SDK版本从21到30,所以我不能使用:

if (!Environment.isExternalStorageManager()) {

因为它需要API级别30,但我的最小值是21。

我是这样请求权限的:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
try {
Uri uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID);
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, uri);
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
startActivityForResult(intent, 2296);
} catch (Exception ex){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivity(intent);
}
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
}
}

那么是否有一个权限检查可以适用于所有这些呢?

我这里的答案是将Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q更改为Build.VERSION.SDK_INT > Build.VERSION_CODES.Q,然后检查!Environment.isExternalStorageManager()的权限。

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
if(!Environment.isExternalStorageManager()){
try {
Uri uri = Uri.parse("package:" + BuildConfig.APPLICATION_ID);
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, uri);
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
startActivity(intent);
} catch (Exception ex){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
startActivity(intent);
}
}
} else {
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
}
}

相关内容

  • 没有找到相关文章

最新更新