Android : Google Maps - error when Location > Device only

on Sunday, September 7, 2014


i have an activity with a simple map on it. Everything worked fine, until i discovered that if the user (when activating GPS) selects "Device only - Use GPS to determine your location" instead of "High accuracy - Use GPS, Wi-Fi, and mobile networks to determine location" it returns a NullPointerException.


Here's the log cat:



09-07 10:34:04.672: E/AndroidRuntime(24336): FATAL EXCEPTION: main
09-07 10:34:04.672: E/AndroidRuntime(24336): Process: com.lifeapps.speedcalc, PID: 24336
09-07 10:34:04.672: E/AndroidRuntime(24336): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lifeapps.speedcalc/com.lifeapps.speedcalc.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread.access$800(ActivityThread.java:135)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.os.Handler.dispatchMessage(Handler.java:102)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.os.Looper.loop(Looper.java:136)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread.main(ActivityThread.java:5001)
09-07 10:34:04.672: E/AndroidRuntime(24336): at java.lang.reflect.Method.invoke(Native Method)
09-07 10:34:04.672: E/AndroidRuntime(24336): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-07 10:34:04.672: E/AndroidRuntime(24336): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-07 10:34:04.672: E/AndroidRuntime(24336): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
09-07 10:34:04.672: E/AndroidRuntime(24336): at com.lifeapps.speedcalc.MainActivity.setUpMap(MainActivity.java:155)
09-07 10:34:04.672: E/AndroidRuntime(24336): at com.lifeapps.speedcalc.MainActivity.setUpMapIfNeeded(MainActivity.java:116)
09-07 10:34:04.672: E/AndroidRuntime(24336): at com.lifeapps.speedcalc.MainActivity.onCreate(MainActivity.java:46)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.Activity.performCreate(Activity.java:5231)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-07 10:34:04.672: E/AndroidRuntime(24336): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
09-07 10:34:04.672: E/AndroidRuntime(24336): ... 9 more


so, this:



double latitude = lastKnownLocation.getLatitude();
double longitude = lastKnownLocation.getLongitude();


The app works even if the user doesn't have an internet connection, but if this is selected, it fails to load.


Hope you can help me :)


0 comments:

Post a Comment