Java checkSelfPermission始终返回已授予的权限

Java checkSelfPermission始终返回已授予的权限,java,android,permissions,android-camera,Java,Android,Permissions,Android Camera,我有一个Android应用程序,我想检查一下摄像头的许可。但是,即使我将其关闭(在模拟器或真实设备的应用程序设置中),结果始终为0(已授予)。 我使用的模拟器和真实设备是在SDK23上,Android M int permissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA); 在AndroidManifest.xml中,我有: 当我记录此日志时: System.out.pr

我有一个Android应用程序,我想检查一下摄像头的许可。但是,即使我将其关闭(在模拟器或真实设备的应用程序设置中),结果始终为0(已授予)。 我使用的模拟器和真实设备是在SDK23上,Android M

int permissionCheck = ContextCompat.checkSelfPermission(mActivity, Manifest.permission.CAMERA);
在AndroidManifest.xml中,我有:

当我记录此日志时:

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版本(build、target、compile)都设置为23或更高。

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

int permissionCheck = PermissionChecker.checkSelfPermission(getReactApplicationContext(), Manifest.permission.CAMERA);
而不是:

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

PermissionChecker返回正确答案,但不返回ContextCompat。

它不适用于我。无论如何,谢谢你。我也有这个问题,但只有少数手机有,大多数手机没有这个问题。这不应该是公认的答案,因为它不会适用于所有人。在您的问题中,您应该清楚您使用的是React-Native,因为答案就是这么说的