Tengo muchas personas que informan sobre un error que no puedo reproducir. Al intentar abrir un MapView
, informa que el getBestProvider
devuelve nulo y sé que eso significa que no se encuentra ningún proveedor que cumpla mis criterios, que es ACCURACY_COARSE
, por lo que si no hay un GPS, debe recurrir a network or passive
, pero obviamente no en esos dispositivos de usuario. ¿Qué significa eso entonces que el GPS está apagado y no hay conexión de red?GetBestProvider de LocationManager que devuelve nulo
Intenté apagar el GPS y poner el teléfono en modo avión para tratar de reproducir el problema, pero aún así pude abrir la vista de mapa sin una fuerza cercana, así que no sé cómo manejar este problema.
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
geocoder = new Geocoder(this);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
List<String> lProviders = locationManager.getProviders(false);
for(int i=0; i<lProviders.size(); i++){
Log.d("LocationActivity", lProviders.get(i));
}
String provider = locationManager.getBestProvider(criteria, true); // null
long minTime = 60000;
float minDistance = 5;
locationManager.requestLocationUpdates(provider, minTime, minDistance, this);
error
java.lang.RuntimeException: Unable to start activity ComponentInfo{ecm2.android/ecm2.android.LocationActivity}:
java.lang.IllegalArgumentException: provider==null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: provider==null
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:625)
at ecm2.android.LocationActivity.onCreate(LocationActivity.java:142)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
right Entiendo eso, pero incluso cuando desactivo el GPS y enciendo el teléfono en modo avión, lo que significaría que no tiene acceso a la red tampoco sigo sin tener ese problema, ¿cómo están? ¿Qué más se puede desactivar? – tyczj
Puede desactivar ** location **, lo que significa que el usuario no permite que la aplicación obtenga su ubicación de ninguna manera. Además, esto va a ser algo específico del vendedor. Pude obtener 'null' en mi HTC Explorer. Puede ser diferente con diferentes dispositivos. –
agregar estos al manifiesto –
Thushara