遇到的问题:利用百度地图sdk实现定位时,用官方demo的代码只能显示在北京(即定位失败)的问题。
解决方法:这是因为安卓6.0以上需要动态获取权限(弹出框询问用户是否通过权限)的操作,所以即使在manifest里面申请了权限也无法正确运行
首先,请看官方 文档
其实我觉得文档写的不太详细啦,不过既然提到了6.0以上需要动态获取权限,就自力更生啦。
先上完整代码:
①manifest中的权限设置:
<!-- 地图 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET" />
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" />
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
并且在 application 标签里面加入
<service android:enabled="true" android:name="com.baidu.location.f" android:process=":remote">
<intent-filter>
<action android:name="com.baidu.location.service_v5.0.0"/>
</intent-filter>
</service>
② xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
androi