是否有任何选项来检查在Android无障碍使用许可的状态(授予应用程序或没有)

问题描述:

是否有任何选项来检查在Android无障碍使用许可的状态(是否被授予应用程序或没有)。是否有任何选项来检查在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

'ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);'[读](https://developer.android .COM /培训/许可/ requesting.html) –

+0

我已经试过这一点,但它返回-1,而不管状态(我用Manifest.permission.BIND_ACCESSIBILITY_SERVICE) – Hash

可以用于检查许可状态对您的应用程序下面的代码。 (这里写权限的外部存储)。

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 
     } 

    }