android定位sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
android 6.0 开发须知
下载开发文档
开启动态权限机制的原因

google在android 6.0中引入了动态权限获取机制(runtime permission),使得android的权限管理更加严格完善。
动态权限获取要求开发者在调用涉及相关权限的代码时,使用系统接口来动态申请相应权限。定位sdk涉及权限即在此范畴中。
在未获取到定位权限情况下,定位sdk获取到的定位依据(基站、wi-fi)均为空值,因此无法有效定位,定位服务会返回错误码167。

动态权限机制的开启

android 6.0对于动态权限机制的开启,主要根据应用所设定的targetsdkversion,具体情况如下:

targetsdkversion是否默认禁用敏感权限是否开启动态权限
<23
>=23

因此需要在项目配置文件中修改您的targetsdkversion配置。
对于eclipse环境,请更改androidmanifest.xml中代码;androidstudio环境,请更改build.gradle中的代码。

android 6.0系统的位置开关

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

系统开关名称对定位的影响
原生系统(也包括未进行定制的系统)位置信息原生系统下,位置开关控制影响到系统级的卫星定位及网络定位:
a. 在关闭位置开关情况下,应用无法获取到wifi信息,也无法使用卫星定位,仅可使用基站定位(cl类型),造成定位误差变大;
b. 打开位置开关后,应用可以使用wifi信息或卫星定位进行定位,会大幅提升定位精度。
第三方、厂商定制系统gps厂商定制系统(部分)开关仅影响卫星定位使用:
a. 关闭卫星定位开关情况下,应用仍可访问到wifi信息,可以使用wifi定位;
b. 打开卫星定位开关情况下,应用才可以使用卫星定位。

注意:
1. 关于原生系统定位开关会影响wifi获取的问题,开发者可自行从网络中寻找相关说明。
这是android6.0原生系统已知问题,需要google修复;
厂商定制rom表现会有所差异。(开发者可自行从网络中寻找相关说明)
2. 部分早期android6.0版存在位置开关关闭后无法定位的问题,目前测试最新的android6.0版本原生系统,已不存在此问题。
针对6.0系统的位置开关问题。由于卫星定位设置的行为在各版本中一致, 因此可以简单的使用系统api来判断用户是否打开了位置按钮,让检测到系统版本为6.0, 并且用户未打开按钮时,进行提示。

locationmanager locmanager =(locationmanager)getsystemservice(context.location_service);
if(!locmanager.isproviderenabled(locationmanager.gps_provider)){
// 未打开位置开关,可能导致定位失败或定位不准,提示用户或做相应处理
}

上一篇

android 7.0 开发须知

下一篇

定位错误返回码

本篇文章对您是否有帮助?

网站地图