Android的ContextCompat.checkSelfPermission()返回不正确的值

时间:2016-02-11 14:56:33

标签: android permissions android-6.0-marshmallow

我正在尝试检查Android Marshmallow中用户授予/撤消的权限。不幸的是,ContextCompat.checkSelfPermission()(这是Context.checkCallingOrSelfPermission周围的一个warpper)似乎总是返回PackageManager.PERMISSION_GRANTED(0),如果您在清单中包含了该特定权限,而不管当前的权限状态如何(例如如果用户已撤销权限)。我也尝试了someContext.checkCallingOrSelfPermission(),但结果是一样的。

有没有人经历过这个?我在nVidia Shield控制台上使用Android Marshmallow(使用nVidia的Beta程序)。

1 个答案:

答案 0 :(得分:9)

事实证明,清单中的targetSdkVersion必须是23,我的是22.如果您的目标SDK是23(Android 6),默认情况下会禁用所有权限(在清单中),而如果您的目标SDK为22(Android 5.1),您的应用程序在Android 6上运行,默认情况下,当用户安装应用程序时启用所有权限,即使用户稍后撤消权限,提到的API也会返回不正确的值(在我看来是一个错误。)