2017-02-03 1 views
2

Ich habe einen Fehler wie folgt aus:Klasse nicht gefunden, wenn unmarshalling: com.google.android.gms.location.LocationResult

02-03 16:41:18.294 994-1830/? E/Parcel: Class not found when unmarshalling: com.google.android.gms.location.LocationResult 
            java.lang.ClassNotFoundException: com.google.android.gms.location.LocationResult 
             at java.lang.Class.classForName(Native Method) 
             at java.lang.Class.forName(Class.java:309) 
             at java.lang.Class.forName(Class.java:273) 
             at android.os.Parcel.readParcelableCreator(Parcel.java:2281) 
             at android.os.Parcel.readParcelable(Parcel.java:2245) 
             at android.os.Parcel.readValue(Parcel.java:2152) 
             at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) 
             at android.os.BaseBundle.unparcel(BaseBundle.java:221) 
             at android.os.BaseBundle.containsKey(BaseBundle.java:269) 
             at android.content.Intent.hasExtra(Intent.java:4924) 
             at com.android.server.am.ActiveServices.startServiceLocked(ActiveServices.java:398) 
             at com.android.server.am.a.startServiceLocked(Unknown Source) 
             at com.android.server.am.ActivityManagerService.startServiceInPackage(ActivityManagerService.java:15737) 
             at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:324) 
             at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:219) 
             at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64) 
             at android.os.Binder.execTransact(Binder.java:463) 
            Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.location.LocationResult" on path: DexPathList[[zip file "/system/framework/XposedBridge.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
             at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
             at java.lang.Class.classForName(Native Method)  
             at java.lang.Class.forName(Class.java:309)  
             at java.lang.Class.forName(Class.java:273)  
             at android.os.Parcel.readParcelableCreator(Parcel.java:2281)  
             at android.os.Parcel.readParcelable(Parcel.java:2245)  
             at android.os.Parcel.readValue(Parcel.java:2152)  
             at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)  
             at android.os.BaseBundle.unparcel(BaseBundle.java:221)  
             at android.os.BaseBundle.containsKey(BaseBundle.java:269)  
             at android.content.Intent.hasExtra(Intent.java:4924)  
             at com.android.server.am.ActiveServices.startServiceLocked(ActiveServices.java:398)  
             at com.android.server.am.a.startServiceLocked(Unknown Source)  
             at com.android.server.am.ActivityManagerService.startServiceInPackage(ActivityManagerService.java:15737)  
             at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:324)  
             at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:219)  
             at android.content.IIntentSender$Stub.onTransact(IIntentSender.java:64)  
             at android.os.Binder.execTransact(Binder.java:463)  
             Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.location.LocationResult 
             at java.lang.Class.classForName(Native Method) 
             at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
             at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
             at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
               ... 18 more 
            Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

Mein gradle: build.gradle. Mein Manifest: manifest. Ich arbeite auf Anwendung, die mit Standort arbeiten und diesen Fehler haben. Ich konfiguriere ein Multidex, aber es ist keine Hilfe. Was kann falsch sein?

+0

Mögliche Duplikat [BadParcelableException in Google Maps code] (http://stackoverflow.com/questions/13900322/badparcelableexception-in-google-maps-code) –

+0

Nein, es ist nicht mein Problem (( – Kl0nLutiy

+0

Können Sie Code schreiben wo Sie das LocationResult-Objekt, das Sie übergeben, paketieren und entpacken? –

Antwort

1

Ich hatte das gleiche Problem. Nach einer Menge Debugging wurde mir klar, dass ich meine eigenen Extras zu dem Intent-Bundle hinzugefügt hatte.

Ich erstelle eine Standortanfrage und gebe eine ausstehende Absicht an, die ausgelöst werden soll, wenn eine Standortaktualisierung im Hintergrund empfangen wird.

Absicht myIntent = neue Absicht (Kontext, MyIntentServiceClass.class); myIntent.putExtra ("someString", "someValue");

PendingIntent PendingIntent = PendingIntent.getService (Kontext, 0, meinIntent, PendingIntent.FLAG_UPDATE_CURRENT);

LocationServices.FusedLocationApi.requestLocationUpdates (apiClient, request, pendingIntent);

Der Intent-Service wird ausgelöst, wenn der Standort empfangen wird. Mein eigenes Extra ist in der Absicht. Aber es gibt keinen Ort. Ich hatte genau den gleichen Fehler wie in den Protokollen.

Sobald ich mein eigenes Extra aus dem Intent entferne, erhalte ich den Standort und der Fehler ist weg.

Ich weiß aus der Arbeit mit der Google Map API, dass es ähnliche Herausforderungen gibt, wenn Sie ein Map-Objekt verwenden und auch Ihre eigenen Elemente beim Speichern und Wiederherstellen von Zustand speichern möchten. Ich kann den Link zur Dokumentation gerade nicht finden, aber es war etwas in der Wirkung, dass das Bundle selbst parzelliert wurde (wodurch der zugehörige Klassenlader verloren ging). Um es zu umgehen, müssen Sie ein eigenes Bundle erstellen und Ihre internen Objekte im neuen Bundle ablegen. Fügen Sie das Bündel dann dem Out-Status hinzu.

Ich werde herumspielen, um zu sehen, wie ich meine eigenen Extras zu dem Standortanforderungsbündel hinzufügen kann, ohne es wie hier zu beeinflussen.