我试图通过 LocationManager.NETWORK_PROVIDER 获取用户的位置,但它总是返回一个空白字符串。只有有时我会得到有效的数据。有没有办法让这个方法重新迭代,直到它给我一个位置?我认为该位置会很快到来,并且不需要这种方法。我尝试重新调用它,直到它不显示空白字符串,但什么也没有出现。
这是我调用的方法
public String getLocation(Locale locale, Context context, boolean city, boolean postal, boolean state_prov) throws IOException{
LocationManager locMan = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
LocationListener locList = new MyLocList();
Geocoder gC = new Geocoder(context,locale);
Location gpsLocation = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
locMan.requestLocationUpdates(locMan.NETWORK_PROVIDER, 500, 200, locList);
Location networkLocation = locMan.getLastKnownLocation(locMan.NETWORK_PROVIDER);
if (city)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getSubAdminArea());
else if (postal)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getPostalCode());
else if (state_prov)
return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getAdminArea());
else
return "Nothing";
}
我通常会询问城市或邮政编码,但大多数时候它都是空的。使用
Location gpsLocation = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
结果是 NullPointer,所以我使用的是 NETWORK_PROVIDER
我已经设置了这些权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
这就是我所说的
String data = getLocation(Locale.getDefault(),getBaseContext(),true,false,false);
结果,我不断得到一个空白字符串。
我之前问了一个关于没有收到城市的问题,但是现在似乎没有数据来了,如果是,它不是始终可用的。