简体   繁体   中英

How to Select and Load saved game snapshot from google play games

I am on the Saved Games screen where is shows the list of all saves. When I select a saved game the app crashes with the error: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.games.snapshot.SnapshotMetadataEntity

It's basically the same code from here https://developers.google.com/games/services/android/savedgames?authuser=3&hl=sl

Please assist.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        switch (requestCode) {
            case RC_LIST_SAVED_GAMES:
                if (resultCode == RESULT_OK) {
                    if (intent != null) {
                        if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA)) {
                            // Error occurs here when saved game is selected
                            SnapshotMetadata snapshotMetadata = intent.getParcelableExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA);
                            assert snapshotMetadata != null;
                            sCurrentSaveName = snapshotMetadata.getUniqueName();
                            onLoadFromSnapshot(intent.getParcelableExtra(SnapshotsClient.EXTRA_SNAPSHOT_METADATA));
                        } else if (intent.hasExtra(SnapshotsClient.EXTRA_SNAPSHOT_NEW)) {
                            String unique = Long.toString(System.currentTimeMillis());
                            sCurrentSaveName = "snapshotH-" + unique;
                            onSaveSnapshot(null);
                        }
                    }
                }
                break;
        }
    }

This is what is shown in Logcat

2020-02-07 19:07:07.410 31988-31988/com.positivelymade.homeless2 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.positivelymade.homeless2, PID: 31988 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=9005, result=-1, data=Intent { (has extras) }} to activity {com.positivelymade.homeless2/com.positivelymade.homeless2.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.games.snapshot.SnapshotMetadataEntity at android.app.ActivityThread.deliverResults(ActivityThread.java:4605) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:19 48) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7045) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964) Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.games.snapshot.SnapshotMetadataEntity at android.os.Parcel.readParcelableCreator(Parcel.java:2855) at android.os.Parcel.readParcelable(Parcel.java:2781) at android.os.Parcel.readValue(Parcel.java:2684) at android.os.Parcel.readArrayMapInternal(Parcel.java:3053) at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288) at android.os.BaseBundle.unparcel(BaseBundle.java:232) at android.os.BaseBundle.containsKey(BaseBundle.java:504) at android.content.Intent.hasExtra(Intent.java:7923) at com.positivelymade.ho meless2.MainActivity.onActivityResult(MainActivity.java:222) at android.app.Activity.dispatchActivityResult(Activity.java:7759) at android.app.ActivityThread.deliverResults(ActivityThread.java:4598) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7045) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

In my case, it is not working only in my release build since it is using pro guard. I solved it by adding pro guard configuration described here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM