![](/img/trans.png)
[英]Cannot resolve symbol ContextCompat.checkSelfPermission()
[英]Cannot resolve method checkSelfPermission
我正在尝试让我的应用程序为 Android 6 做好准备,但现在我遇到了需要请求和检查权限的问题。
我从文档中尝试了以下内容:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);
问题是 Android Studio 说Cannot resolve method 'checkSelfPermission'
。
我已经包含了 appcompat 和支持库。 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}
尝试在带有 Kotlin 的Fragment
使用checkSelfPermission()
并想知道如何绕过Context
为 null?
看看下面的示例,请记住,在Fragment
附加到Activity
, Context
将为空。
private fun fineLocationPermissionApproved(): Boolean {
val context = context ?: return false
return PackageManager.PERMISSION_GRANTED == checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.