El método isPresent () de Geocoder siempre devuelve false

Había escrito una actividad simple para probar la presencia de Geocoder, llamando a Geocoder.isPresent () siempre devuelve false.

Clase:

public class LocationTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); Log.d( "LocationTestActivity", "Geocoder.isPresent : " + Geocoder.isPresent() ); } } 

AndroidManifest.xml TAMBIÉN tiene las siguientes entradas antes del elemento "application":

 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

Entorno: Eclipse Indigo 3.7.1, emulador ICS 4.0 en XP Professional 2002 SP 3

Por favor, ayúdame a entender:
1. ¿Por qué Geocoder.isPresent () está siempre returing false?
2. ¿Qué cambios se deben realizar para que Geocoder.isPresent () devuelva true?

Muchas gracias por adelantado!

En realidad, el Geocoder necesita un servicio que se ejecuta en el fondo por el marco.

De la documentación:

Los métodos de consulta de Geocoder devolverán una lista vacía si no hay servicio de back-end en la plataforma. Utilice el método isPresent () para determinar si existe una implementación de Geocoder.

Así que si nos fijamos en la documentación de isPresent() , afirma.

Devuelve true si los métodos Geocoder getFromLocation y getFromLocationName están implementados. La falta de conectividad de red puede hacer que estos métodos devuelvan listas nulas o vacías.

Nota: tenga en cuenta que isPresent() no está disponible en las isPresent() Pre-Api 9.

¿Está probando este código en Emulador o dispositivo? He enfrentado el mismo problema cuando estaba usando GeoCoder en el emulador 2.2. Pero el código funciona bien en el emulador 2.1. Intente utilizar 2.1

Y el código debe estar funcionando bien en el dispositivo.

Utilice AsyncTask para obtener coordenadas del servidor mediante geocoder . Por ejemplo, getFromLocationName() debe llamarse usando AsyncTask . UI hilo (actividad principal) no permite las tareas que toman demasiado tiempo, por lo tanto, el método devuelve lista vacía.

  • Android Geocoder.getFromLocationName dejó de funcionar con los límites
  • ¿Cuál es la mejor manera de interpretar la ubicación del usuario junto a Geocoder
  • Extraer dirección de cadena - Equivalente a NSDataDetector en iOS
  • Servicio no disponible - Geocoder Android
  • Geocoder.getFromLocation () devuelve direcciones en árabe
  • Android GeoCoder devuelve sólo 1 resultado
  • El servicio de Google Geocoder no es viable (Coordenadas a la dirección)
  • Resultados de geocodificación sin mostrarlos en un mapa
  • Geocoder.getFromLocationName devuelve sólo null
  • Error de Geocoder grpc
  • El geocodificador no siempre devuelve un valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.