我想知道我的应用程序的相机权限是否被授予。然后我写了下面的函数,但它们总是返回错误的结果。无论我如何在系统设置中禁用我的应用程序的相机权限,这两个函数总是返回 TRUE。你知道我的代码有什么问题吗?
public static boolean checkCameraPermission() {
String permission = "android.permission.CAMERA";
int res = App.getInstance().checkCallingOrSelfPermission(permission);
return (res == PackageManager.PERMISSION_GRANTED);
}
public static boolean checkCameraPermission(Context context) {
PackageManager pm = context.getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.CAMERA", pm.getNameForUid(Binder.getCallingUid())));
return permission;
}
Run Code Online (Sandbox Code Playgroud)
我想知道我的应用程序的相机权限是否被授予
如果您的targetSdkVersion年龄为 23 岁或更高,并且您在 Android 6.0+ 设备上运行,请使用checkSelfPermission(). 的本机实现checkSelfPermission()是 on Context; ContextCompat有一个不会在较旧的 Android 设备上崩溃的版本。
如果您的targetSdkVersion年龄为 22 岁或更低,或者您在 Android 5.1 或更低版本的设备上运行,则您始终拥有请求的权限(例外:可能是某些自定义 ROM)。
如果您的targetSdkVersion年龄为 22 岁或更低,并且您在 Android 6.0 或更高版本的设备上运行,则您始终拥有请求的权限,就您所调用的方法而言,如您的问题所述。用户在设置中可以阻止您访问与这些权限相关的数据,但从技术上讲,用户实际上并没有撤销自己的权限(尽管我们经常说它们只是为了保持解释简单)。我知道您无法确定用户是否阻止了您的相机访问,除非在您尝试访问相机时捕获相关异常。请注意,这些异常将在其他情况下引发(例如,相机访问被设备策略阻止)。
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |