checkSelfPermission 总是 returns GRANTED

checkSelfPermission always returns GRANTED

我有一个 Android 应用程序,我想检查相机权限。但是,即使我将其关闭(在模拟器或真实设备的应用程序设置中),结果始终为 0(GRANTED)。 我用的模拟器和真机是SDK 23,AndroidM.

int permissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA);

在AndroidManifest.xml中,我有:

<uses-permission android:name="android.permission.CAMERA" />

当我记录这个时:

System.out.println("Build.VERSION.SdkInt : " + VERSION.SDK_INT);
System.out.println("permissionCheck : " + permissionCheck);

我明白了:

Build.VERSION.SdkInt : 23
permissionCheck : 0

检查"build.gradle"中的"targetSdkVersion",必须是23或以上,可能问题是你将构建版本设置为23但目标版本小于23。请确保所有您的 sdk 版本(构建、目标、编译)设置为 23 或更高版本。

事实上,targetSdkVersion 在 build.gradle 中必须至少为 23,但解决此问题的方法是使用:

int permissionCheck = PermissionChecker.checkSelfPermission(getReactApplicationContext(), Manifest.permission.CAMERA);

而不是:

int permissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA);

PermissionChecker returns 正确答案但不是 ContextCompat。