Android6.0(包括)以后获取Wifi 扫描信息列表即getScanResults()为空

原文地址:http://blog.csdn.net/dodod2012/article/details/78844284


原文地址:http://blog.csdn.net/qq_33105369/article/details/78431532


概述:

这篇文章主要解决6.0(包括)的系统,动态申请了ACCESS_COARSE_LOCATION 或者 ACCESS_FINE_LOCATION 权限以后,getScanResults().size()还是为0.


1.首先需要了解系统版本>=6.0权限的基本知识。  


http://www.jianshu.com/p/a51593817825 



2.Android 6.0系统的位置开关


参考 http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/androidmnotice


Android 6.0系统的位置开关

Android 6.0原生系统与部分厂商定制的6.0系统在系统定位开关表现上稍有差异。具体来讲:

系统开关名称对定位的影响
原生系统(也包括未进行定制的系统) 位置信息 原生系统下,位置开关控制影响到系统级的GPS及网络定位:

在关闭位置开关情况下,应用无法获取到Wifi信息,也无法使用GPS,仅可使用基站定位(cl类型)*,造成定位误差变大;

打开位置开关后,应用可以使用Wifi信息或GPS进行定位,会大幅提升定位精度

第三方、厂商定制系统 GPS 厂商定制系统(部分)开关仅影响GPS使用:

关闭GPS开关情况下,应用仍可访问到Wifi信息,可以使用wifi定位

打开GPS开关情况下,应用才可以使用GPS定位

  • 注:

1.关于原生系统定位开关会影响Wifi获取的问题,可参照Google Android Bug反馈论坛:

https://code.google.com/p/android/issues/detail?id=185370

这是Android6.0原生系统已知问题,需要Google修复;

厂商定制ROM表现会有所差异。也可参照国内一些开发者文章描述:

http://www.jianshu.com/p/3400ca0deeee.


2.部分早期Android6.0版存在位置开关关闭后无法定位的问题,目前测试最新的Android6.0版本原生系统,已不存在此问题。

针对6.0系统的位置开关问题。由于GPS设置的行为在各版本中一致,因此可以简单的使用系统API来判断用户是否打开了位置按钮,让检测到系统版本为6.0,并且用户未打开按钮时,进行提示。



LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 
if(!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
 
    // 未打开位置开关,可能导致定位失败或定位不准,提示用户或做相应处理
}



       实测在魅蓝Note3(7.0)系统上开了位置信息后可以获取Wifi信息。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值