SecurityException al llamar a getLastKnownLocation

Hemos recibido informes de bloqueos en algunos dispositivos cuando un usuario abre una Actividad que llama al método getLastKnownLocation del gestor de getLastKnownLocation . Hemos solicitado todos los permisos necesarios en nuestro manifiesto de aplicación:

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Aquí está el rastreo de la pila:

 java.lang.RuntimeException: Unable to resume activity {com.projectname/com.projectname.ui.AtmFinderActivity}: java.lang.SecurityException: invalid package name: com.google.android.gms at android.app.ActivityThread.performResumeActivity(ActivityThread.java) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java) at android.app.ActivityThread.access$600(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java) at android.os.Handler.dispatchMessage(Handler.java) at android.os.Looper.loop(Looper.java) at android.app.ActivityThread.main(ActivityThread.java) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.SecurityException: invalid package name: com.google.android.gms at android.os.Parcel.readException(Parcel.java) at android.os.Parcel.readException(Parcel.java) at android.location.ILocationManager$Stub$Proxy.getLastLocation(ILocationManager.java) at android.location.LocationManager.getLastKnownLocation(LocationManager.java) at android.privacy.surrogate.PrivacyLocationManager.getLastKnownLocation(PrivacyLocationManager.java) at com.projectname.util.LocationUtils.getLastKnownLocation(SourceFile:48) at com.projectname.ui.AtmFinderFragment.initMapIfNeeded(SourceFile:401) at com.projectname.ui.AtmFinderFragment.onGooglePlayServicesAvailable(SourceFile:187) at com.projectname.maps.GoogleMapServicesUtil.getGooglePlayServicesStatus(SourceFile:40) at com.projectname.ui.AtmFinderFragment.onResume(SourceFile:149) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:917) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1080) at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1062) at android.support.v4.app.FragmentManagerImpl.dispatchResume(SourceFile:1820) at android.support.v4.app.FragmentActivity.onPostResume(SourceFile:412) at com.actionbarsherlock.app.SherlockFragmentActivity.onPostResume(SourceFile:69) at android.app.Activity.performResume(Activity.java) ... 13 more 

Aquí está el método relevante de LocationUtils:

 public static Location getLastKnownLocation(Context context) { if (context != null) { LocationManager lm = (LocationManager) context.getSystemService( Context.LOCATION_SERVICE); // Get our last known location Location location = lm.getLastKnownLocation( LocationManager.NETWORK_PROVIDER); if (location == null) { location = lm.getLastKnownLocation( LocationManager.GPS_PROVIDER); } return location; } return null; } 

No hemos podido reproducir este problema en ningún dispositivo que tengamos a mano. ¿Alguien ha encontrado este problema antes?

Me parecen como si pudiera evitarlo mediante el uso de característica de requerir

Mira esto. Aquí he implementado métodos para encontrar últimos gps conocidos y últimas ubicaciones de red conocidas. https://github.com/thamaranga/GpsNew2/tree/master/GpsNew2

  • Activación del modo de ubicación Alta exactitud o ahorro de la batería, programáticamente, sin necesidad de que el usuario visite Configuración
  • Actualización de la ubicación de Android después de cada 5min Si el vehículo no se mueve
  • ¿Necesito solicitar actualizaciones de ubicación al utilizar Geofences de ubicación fusionada?
  • Cómo encontrar la distancia correcta entre dos geopuntos en el mapa?
  • Error al agregar geofences en Android (código de estado 1000)
  • Servicio GeoCoder no disponible
  • Cómo obtener la ubicación de las coordenadas
  • Android: compruebe si los servicios de ubicación están habilitados utilizando el proveedor de ubicación fusionado
  • Calcular la velocidad de una aplicación de navegación sin el método getSpeed ​​()
  • Permisos de tiempo de ejecución de Android en las versiones de android debajo de M?
  • Servicios de Google Play: ¿cómo comprobar si hay una devolución de llamada pendiente pendiente "activa" registrada en las actualizaciones de ubicación / reconocimiento de actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.