开发好的百度定位程序,在已有设备上可以正常使用,wifi和4G都可以定位,但是新买了台设备,荣耀10,android8.0的,发现wifi定位成功,但是4G定位失败,权限肯定是都给了,解决方法:将手机设置-安全和隐私-定位服务-访问我的位置信息打开,就可以了。原文链接百度定位 WIFI正常 电信3G出错;Error Code:62
附判断定位服务是否开启,打开位置信息设置界面代码片段:
判断定位服务是否开启:
/**
* 手机是否开启位置服务,如果没有开启那么所有app将不能使用定位功能
*/
public static boolean isLocServiceEnable(Context context) {
LocationManager locationManager = (LocationManager)
context.getSystemService(Context.LOCATION_SERVICE);
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
// 有一个为true,就代表定位服务已经打开
if (gps || network) {
return true;
}
return false;
}
打开位置信息设置界面:
/**直接跳转至位置信息设置界面*/
private void openLocation() {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent,3/*自定义的请求码*/);
}
打开位置信息设置界面的回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 3:
if (resultCode == RESULT_CANCELED) {
if (isLocServiceEnable(this)) {
// 位置信息已打开,做接下来的操作
} else {
Toast.makeText(MainActivity.this, "未开启GPS或定位服务,无法进入",
Toast.LENGTH_LONG).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 2000);
}
}
break;
}
}