Android 安卓&x27;s ContextCompat.checkSelfPermission()返回的值不正确

Android 安卓&x27;s ContextCompat.checkSelfPermission()返回的值不正确,android,permissions,android-6.0-marshmallow,Android,Permissions,Android 6.0 Marshmallow,我正在尝试检查Android Marshmallow中的用户是否授予/撤销权限。不幸的是ContextCompat.checkSelfPermission()(它是Context.checkCallingOrSelfPermission)似乎总是返回PackageManager.PERMISSION\u grated(0),如果您在清单中包含该特定权限,而不管权限的当前状态如何(例如,如果用户已撤销权限)。我也尝试了someContext.checkCallingOrSelfPermission

我正在尝试检查Android Marshmallow中的用户是否授予/撤销权限。不幸的是
ContextCompat.checkSelfPermission()
(它是
Context.checkCallingOrSelfPermission
)似乎总是返回
PackageManager.PERMISSION\u grated
(0),如果您在清单中包含该特定权限,而不管权限的当前状态如何(例如,如果用户已撤销权限)。我也尝试了
someContext.checkCallingOrSelfPermission()
,但结果相同


有人经历过这种情况吗?我正在nVidia Shield控制台上使用Android棉花糖(使用nVidia的Beta程序)。

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

你的
targetSdkVersion
是什么?@commonware是的,你指出了问题所在!我将在回答中进行解释。你也可以使用
PermissionChecker
,它会告诉你用户是否通过设置拒绝了权限组:与target 22相同的问题,运行在Android 6.0上。