最近在做Android集成百度地图,定位的时候发现拿到的经纬度一直是4.9E - 324 ,并且locType=62,拿着这个状态码去开放平台查了一圈无果,最后在茫茫百度中找到答案,Android6.0以上需要在配置文件中 加入这个权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission>
并且在代码中要动态申请权限。基本配置按照开放平台配置即可,最后代码中加入权限申请模块,问题解决。
下面附动态申请权限代码块:
private void getPermissionMethod() {
//授权列表
List<String> permissionList = new ArrayList<>();
//检查是否获取该权限 ACCESS_FINE_LOCATION
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (!permissionList.isEmpty()){ //权限列表不是空
String[] permissions = permissionList.toArray(new String[permissionList.size()]);
//动态申请权限的请求
ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
}
}
/**
* 监听用户是否授权
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if(grantResults.length>0){
for (int result:grantResults){
if (result != PackageManager.PERMISSION_GRANTED){
//拒绝获取权限
// Toast.makeText(this, "必须统一所有权限才能使用本程序", Toast.LENGTH_SHORT).show();
// finish();
// return;
}
}
}
break;
default:
break;
}
}
调用getPermissionMethod() 方法即可申请权限获取,最终拿到定位经纬度
注意:以真机测试结果为准
参考:
百度地图定位SDK API
https://www.cnblogs.com/Code-Maniac/p/8568906.html
https://blog.csdn.net/qq_38340601/article/details/87169493