Ho un sacco di persone che riportano un errore che non riesco a riprodurre. Quando si tenta di aprire un MapView
si sta segnalando che il getBestProvider
restituisce null e so che significa che nessun provider viene trovato che soddisfa i miei criteri che è ACCURACY_COARSE
quindi se non c'è il GPS allora dovrebbe ricadere su network or passive
ma ovviamente non lo fa su quei dispositivi utente. Cosa significherebbe, allora, che il GPS sia spento e che non ci sia una connessione di rete?Il getBestProvider di LocationManager restituisce null
Ho provato a spegnere il GPS ea mettere il telefono in modalità aereo per provare a riprodurre il problema, ma sono riuscito comunque ad aprire la mappa senza chiudere la forza, quindi non so come gestire questo 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);
errore
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)
giusto capisco che ma anche quando disattivo il GPS e trasformo il telefono in modalità aereo che significherebbe che non ha accesso alla rete o non riesco ancora a ottenere quel problema quindi come sono? cos'altro può essere disabilitato? – tyczj
È possibile disabilitare ** posizione **, il che significa che l'utente non consente all'applicazione di ottenere la propria posizione con qualsiasi mezzo. Inoltre, questa sarà una cosa specifica del venditore. Sono stato in grado di ottenere "null" sul mio HTC Explorer. Potrebbe essere diverso con diversi dispositivi. –
aggiungere questi per il manifesto –
Thushara