Как распаковать неизвестный объект? - PullRequest
0 голосов
/ 20 апреля 2020

Я сейчас пишу Android Приложение для Volvo SCT unit . Android широковещательно указывает устройство c намерения.

  • com.parrot.asteroid.AUDIO_ON
  • com.parrot.asteroid.AUDIO_OFF

Согласно к логам в эти намерения добавлена ​​дополнительная информация.

Historical Broadcast #82:
BroadcastRecord{40715c10 com.parrot.asteroid.AUDIO_ON}
Intent { act=com.parrot.asteroid.AUDIO_ON (has extras) }
caller=com.parrot.audioservice 40527460 2700:com.parrot.audioservice/10016 pid=2700 uid=10016
dispatchTime=-30s781ms finishTime=-30s777ms
resultTo=null resultCode=0 resultData=null
nextReceiver=1 receiver=null
state=0 (IDLE)   

Можно ли получить эту информацию, ничего не зная об этом? Я попытался сбросить Intent с помощью функции ниже, но она не удалась, за исключением неизвестного объекта. Проблема в том, что я ничего не знаю об этом объекте. Можно ли как-то сбросить этот объект и проанализировать его данные?

Реализация:

    public static void dumpIntent(Intent i){
        Bundle bundle = i.getExtras();
        if (bundle != null) {
            Set<String> keys = bundle.keySet();
            Iterator<String> it = keys.iterator();
            Log.e("BCU","Dumping Intent start");
            while (it.hasNext()) {
                String key = it.next();
                Log.e("BCU","[" + key + "=" + bundle.get(key)+"]");
            }
            Log.e("BCU","Dumping Intent end");
        }
    }

Ошибка, которую я получаю

V/BCU: intent:Intent { act=com.parrot.asteroid.AUDIO_ON cmp=lv.car.bcu/.MusicBroadcastReceiver (has extras) }
E/Parcel: Class not found when unmarshalling: com.parrot.asteroid.audio.service.lowlevel.HSTIPlayerInfo, e: java.lang.ClassNotFoundException: com.parrot.asteroid.audio.service.lowlevel.HSTIPlayerInfo
W/System.err: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.parrot.asteroid.audio.service.lowlevel.HSTIPlayerInfo
        at android.os.Parcel.readParcelable(Parcel.java:1958)
        at android.os.Parcel.readValue(Parcel.java:1846)
        at android.os.Parcel.readMapInternal(Parcel.java:2083)
        at android.os.Bundle.unparcel(Bundle.java:208)
        at android.os.Bundle.keySet(Bundle.java:295)
        at lv.car.bcu.MusicBroadcastReceiver.dumpIntent1(MusicBroadcastReceiver.java:55)
        at lv.car.bcu.MusicBroadcastReceiver.onReceive(MusicBroadcastReceiver.java:28)
        at android.app.ActivityThread.handleReceiver(ActivityThread.java:1797)
        at android.app.ActivityThread.access$2400(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3686)
        at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err:     at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method) 
...