【问题标题】:checkSelfPermission always returns GRANTEDcheckSelfPermission 总是返回 GRANTED
【发布时间】:2017-06-12 20:13:57
【问题描述】:

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

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

【问题讨论】:

    标签: java android permissions android-camera


    【解决方案1】:

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

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

    代替:

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

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

    【讨论】:

    • 它对我不起作用。无论如何,谢谢。我也有这个问题,但只有少数手机有,大多数手机没有这个问题。
    • 这不应该是公认的答案,因为它不适用于所有人。在您的问题中,您应该清楚您使用的是 React Native,因为这就是答案所暗示的
    【解决方案2】:

    在“build.gradle”中检查你的“targetSdkVersion”,它必须是23或以上,可能问题是你将构建版本设置为23但目标版本小于23。请确保你所有的sdk版本( build , target, compile) 设置为 23 或以上。

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多