我正在尝试让我的应用程序为 Android 6 做好准备,但现在我陷入了需要请求和检查权限的地步。
我尝试了文档中的以下内容:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.WRITE_CALENDAR);
问题是 Android Studio 说
Cannot resolve method 'checkSelfPermission'
。
我已经包含了 appcompat 和支持库。 AS 已知
ContextCompat
,但方法本身未知。我不知道我做错了什么 - 在另一个项目中我可以编写这个方法并且它得到认可。
目标API是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 的
checkSelfPermission()
中使用 Fragment
,并想知道如何避免 Context
为空?
看下面的示例,请记住,在将
Fragment
附加到 Activity
之前,Context
将为空。
private fun fineLocationPermissionApproved(): Boolean {
val context = context ?: return false
return PackageManager.PERMISSION_GRANTED == checkSelfPermission(
context,
Manifest.permission.ACCESS_FINE_LOCATION
)
}
0
对于 Android 12 及更高版本...这听起来有点有趣...尝试 chatGPT 以获得您正在寻找的答案。
这是我使用的提示
向我展示如何使用 java 和 minSdkVersion 29 将蓝牙权限添加到 Android studio 中的 mainactivity
我们所有程序员的新时代!!