You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中BroadcastReceiver调用checkSelfPermission参数不匹配如何解决

问题产生原因

ActivityCompat.checkSelfPermission()方法的第一个入参要求为Context类型,你当前在WiFiDerectBroadcastReceiver类中调用该方法时传入的this指向的是BroadcastReceiver实例,而BroadcastReceiver本身不属于Context的子类,参数类型不匹配因此触发编译报错。

解决方法

你可以任选以下任意一种方案修改代码:

  • 方案1:使用onReceive回调自带的context参数作为入参,将报错行代码修改为:
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  • 方案2:使用你构造方法传入的MainActivity实例mActivity作为入参,将报错行代码修改为:
if (ActivityCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

如果后续需要申请未授予的权限,必须使用Activity实例调用权限申请方法:

// 示例:在权限检测未通过时调用,请求码可自定义为整型数值,比如1001
ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1001);

权限申请结果会回调到MainActivity的onRequestPermissionsResult方法中,你在该方法中处理后续逻辑即可。

内容的提问来源于stack exchange,提问作者Tkula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:42:01