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);
結果として空の文字列を取得し続けます。
都市を受信しないことについて以前に質問しましたが、現在はデータが送信されていないようです。