是否有任何选项可以检查android中的辅助功能权限状态(无论是否授予应用程序)。
尝试了两者(来自this帖子)
private boolean checkWriteExternalPermission()
{
String permission = Manifest.permission.BIND_ACCESSIBILITY_SERVICE;
int res = getContext().checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}
和
PackageManager pm = context.getPackageManager();
int hasPerm = pm.checkPermission(
android.Manifest.permission.BIND_ACCESSIBILITY_SERVICE,
context.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
// do stuff
}
但在这两种情况下,无论权限的状态如何,结果都是否定的。即使服务使用权限结果是-1
答案 0 :(得分:0)
您可以使用以下代码检查应用的权限状态。 (此处为外部存储的写入权限)。
if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
{
//Permission Granted
Log.v("LOG", "Permission is granted ");
return true;
}
else{
//Request For Permission
Log.v("LOG","Permission is Revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
如果撤消权限,则使用此覆盖方法
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Log.v("LOG", "Permission: " + permissions[0] + "was" + grantResults[0]);
//resume task needing this permission
}
}