Android 如何使用compile sdk 22检查用户是否分配了权限?

Android 如何使用compile sdk 22检查用户是否分配了权限?,android,permissions,Android,Permissions,注意:我知道权限模型在棉花糖中是如何工作的。请不要回答这个问题 我的应用程序使用compileSdk 22。我想编写一个实用程序来检测用户分配的权限。如果用户有棉花糖设备,那么他可以随时禁用权限。我尝试了下面的代码 if((packageManager.checkPermission(permissionName,context.getPackageName())== PackageManager .PERMISSION_GRANTED)){ // permission is

注意:我知道权限模型在棉花糖中是如何工作的。请不要回答这个问题

我的应用程序使用compileSdk 22。我想编写一个实用程序来检测用户分配的权限。如果用户有棉花糖设备,那么他可以随时禁用权限。我尝试了下面的代码

if((packageManager.checkPermission(permissionName,context.getPackageName())== PackageManager
      .PERMISSION_GRANTED)){
    // permission is granted
  }else{
    // permission is not granted.
  }
对于Manifest.xml文件中声明的每个权限,此代码都返回true。如果我在棉花糖设备上运行此代码,然后手动禁用某些权限,那么对于禁用的权限,此代码也会返回true

因此,如果在compileSdk 23之前有任何方法,它可以告诉用户授予应用程序什么权限


注意:该方法不必是直接api。某种黑客行为也被允许。

这是我的Splash活动中的一个例子

喷溅活动 稍后您将检查用户是否接受它

请求结果
我认为,对于这里的任何解决方案,您都需要将CompileSDK版本提高到23或更高,或者,您可以在具有用户权限的情况下使用。
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                if(ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED ||
                        ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
                    requestPermissions(new String[]{
                            Manifest.permission.CAMERA,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE
                    }, PERMISSION_REQUEST);
                }else {
                    startMain();
                }
            }else{
                startMain();
            }
@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode == PERMISSION_REQUEST){
            if(ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
                    && ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED){
                startMain();
            }else {
                Toast.makeText(getApplicationContext(), "PERMISSIONS !!!", Toast.LENGTH_SHORT).show();
            }
        }
    }