无法解析方法checkSelfPermission

我正在尝试让我的应用程序为Android 6做好准备,现在我已经到了需要请求和检查权限的位置。

我从文档中尝试了以下内容:

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

问题是Android Studio说Cannot resolve method 'checkSelfPermission'

我已经包含了appcompat和支持lib。 ContextCompat对于AS是已知的,但该方法本身是未知的。 我不知道我做错了什么 – 在另一个项目中我可以编写这个方法并得到认可。

TargetAPI是23。

有谁知道解决方案?

以下是您需要在各种场景中调用的方式,

如果是活动:

  ContextCompat.checkSelfPermission(MyActivity.this, Manifest.permission.WRITE_CALENDAR); 

如果是片段:

  ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_CALENDAR); 

在任何实用程序类的情况下使用上下文:

  ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_CALENDAR); 

以下评论以获取更多信息

哦,我的天意 – 这是一个多么愚蠢的错误。

AS将supportlib作为jar导入,这个jar就像2014年一样。我只是将jarimport替换为真正的依赖,并知道它正在工作。

谢谢你的帮助!

对于Fragment使用getActivity().checkSelfPermission

对于Activity使用this..checkSelfPermission或只是checkSelfPermission

 @SuppressLint("NewApi") 

我只是在我的页面上使用它,它对我有用…

尽管可能很傻,但它可能在错误的地方。 我有同样的问题。 粗体部分是我最初放置代码的地方。 斜体部分应该已经消失了

 locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { Log.i("-----------", location.toString()); } **if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {'some code'}** }; 'End of LocationListener method *if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 'some code'}* 

我有同样的问题。 在我的情况下,我添加了一个使用旧的appcompat版本的库,然后编译器找不到合适的appcompat。

为了解决这个问题,我在导入罪魁祸首库时添加了{transitive = false}选项,这解决了这个问题。

我现在有:

api ('org.library.using.old.appcompat:1.0.1') {transitive = false}