2013-04-23 20 views
9

Abbiamo ricevuto segnalazioni di arresti anomali di alcuni dispositivi quando un utente apre un'attività che chiama il metodo getLastKnownLocation del gestore località. Abbiamo chiesto tutte le autorizzazioni necessarie nel nostro manifesto dell'applicazione:SecurityException quando si chiama getLastKnownLocation

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

Ecco la traccia dello stack:

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 

Ecco il metodo rilevante dal 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; 
} 

Noi' non sono stato in grado di riprodurre questo problema su qualsiasi dispositivo che abbiamo a disposizione. Qualcuno ha già incontrato prima questo problema?

+3

Questa è solo una speculazione, ma che ha l'odore di una ROM personalizzata con qualche tipo di problema con i servizi di Google Play. Scoprirò ulteriormente i dispositivi con cui stai avendo problemi, quali sono, quali sono i giri di Android in esecuzione e hanno una sorta di ROM personalizzata o altra personalizzazione che interferisce con Google Play? –

+0

@CharlieCollins è d'accordo. La maggior parte dei dispositivi che abbiamo visto con questo problema è Android 4.2.2 di Galaxy Nexus. Non ho ancora informazioni sulla build specifica in esecuzione. – twaddington

+1

Stiamo riscontrando anche questo problema e sembra che sia dovuto a una ROM personalizzata. –

risposta

0

sembra a me come si potrebbe impedire che esso utilizzando require feature

0

check this out. Qui ho implementato i metodi per trovare l'ultimo gps conosciuto e le ultime posizioni di rete conosciute.

Problemi correlati