Android Service 里的getConfiguredNetworks的权限问题

在一个service里要删除连接过的wifi配置,所以需要执行获取网络配置的方法wifiManager.getConfiguredNetworks();

但是在lint检查时无法通过,因为查看getConfiguredNetworks的定义,这个方法需要明确的权限检查和申请,

疑惑:这个操作在service里,然后权限申请需要Activity对象,就需要在service里获取绑定service的activity

  private List<WifiConfiguration> getWifiConfiguration(){
    /*需要明确的动态权限申请,每次调用都需要检查,不然lint检查不过,故将其封装*/
    if (!(ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
            && ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.ACCESS_WIFI_STATE) == PackageManager.PERMISSION_GRANTED)) {
      ActivityCompat.requestPermissions(mActivity, new String[] {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_WIFI_STATE}, 9999);
    }

    List<WifiConfiguration> wifiConfigList = wifiManager.getConfiguredNetworks();
    return wifiConfigList;
  }

解决:经查找,可以通过bindService后,将绑定该Service的activity的传进service里

https://zhidao.baidu.com/question/921527166235780739.html

Activity侧:myDeviceService.setBindActivity(MainActivity.this);

  private final ServiceConnection conn =
      new ServiceConnection() {
        @Override
        public void onServiceDisconnected(ComponentName name) {}

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
          DeviceService.DeviceBinder binder =
              (DeviceService.DeviceBinder) service;
            myDeviceService = binder.getService();
            myDeviceService.setBindActivity(MainActivity.this);
        }
      };

Service侧:

public void setBindActivity(Activity activity){
    this.mBindActivity = activity;
  }

暂时只能先这样,还没想到更好的方法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值