я пытаюсь получить текущую координату и адреса с помощью NETWORK_PROVIDER в trhead, но когда я переключаюсь на GPS_PROVIDER, приложение принудительно закрывается: с сообщением из LogCat:
02-24 16: 54: 00.249: E / AndroidRuntime (3004): android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может касаться его представлений.
Я думаю, какая разница, когда я просто меняюпровайдер из сети в GPS, как и раньше при использовании сети, приложение работает хорошо ..
это код для потока:
private void requestPosition()
{
if(!cekInternet())
{
Txt_konek.setText("Need internet Connection");
}
else
{
new Thread()
{
public void run()
{
Message localMessage = Message.obtain();
localMessage.what=1;
try
{
Splash2.this.ll = Splash2.this.show_current_location();
Splash2.this.lat = Double.valueOf(Double.parseDouble(Splash2.this.ll.substring(0,Splash2.this.ll.indexOf(",")-1)));
Splash2.this.lng = Double.valueOf(Double.parseDouble(Splash2.this.ll.substring(1+Splash2.this.ll.indexOf(","))));
Splash2.this.posisiUser = Splash2.this.goToGeocoder(Splash2.this.lat.doubleValue(), Splash2.this.lng.doubleValue());
Splash2.this.messageHandler.sendMessage(localMessage);
return;
}
catch(Exception localException)
{
while(true)
{
Splash2.this.Txt_konek.setText("no internet connection");
}
}
}
}
.start();
}
}
этот метод для получения текущего местоположения:
private String show_current_location()
{
Location localLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(localLocation==null)
{
this.longLat = localLocation.getLatitude()+","+localLocation.getLongitude();
}
else
{
this.longLat = localLocation.getLatitude()+","+localLocation.getLongitude();
}
return this.longLat;
}
и это locationListener: