2017-10-11 5 views
-6

Je suis en train de développer une application Android qui obtient la position via NETWORK_PROVIDER, mais j'ai des problèmes pour l'exécuter sur Android 7 (alors qu'il fonctionne correctement sur les versions précédentes). Voici le code:Crash Android APP sur getLastKnownLocation()

LocationManager posM; 
double latitude; 
double longitude; 

List<Address> addresses = null; 

try { 
    posM = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location = posM.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 

    Geocoder geocoder; 

    geocoder = new Geocoder(Activity1.this, Locale.getDefault()); 

    addresses = geocoder.getFromLocation(latitude, longitude, 1); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Je ne sais pas pourquoi il se bloque sur Android 7 ... Merci de l'aide

+5

S'il vous plaît ajouter la trace de la pile – JFPicard

+0

Afficher l'erreur stacktrace –

+0

Excusez-moi, comment puis-je obtenir erreur stacktrace sur le téléphone? – Pietro

Répondre

1

Parce que getLastKnownLocation renvoie la valeur null la plupart du temps. Le système ne connaît généralement pas votre location. Utilisez requestLocationUpdates ou requestSingleUpdate pour activer la détection location et obtenir l'emplacement actuel.

+0

Merci, mais pourquoi cela se produit-il uniquement sur Android 7? Il fonctionne parfaitement sur 5 ... – Pietro

+1

Il va réussir ou échouer selon si le système a un emplacement qu'il connaît déjà et qui n'est pas périmé, sur n'importe quel système d'exploitation. Le fait que vous le voyez sur 7 et non 5 est une coïncidence. Peut-être que vous avez une autre application qui utilise l'emplacement sur votre 5 appareil et non votre 7. Ou peut-être le code de mise en cache pendu un peu. Mais cela peut et va arriver sur n'importe quelle version du système d'exploitation. getLastKnownLocation peut être utilisé comme une optimisation, mais jamais utilisé. –