【问题标题】:How to Select and Load saved game snapshot from google play games如何从谷歌玩游戏中选择和加载保存的游戏快照
【发布时间】:2020-05-24 02:44:56
【问题描述】:

我在保存的游戏屏幕上,其中显示了所有保存的列表。当我选择保存的游戏时,应用程序崩溃并出现错误:android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.gms.games.snapshot.SnapshotMetadataEntity

这里的代码基本相同https://developers.google.com/games/services/android/savedgames?authuser=3&hl=sl

请帮忙。

    @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;
        }
    }

这就是 Logcat 中显示的内容

2020-02-07 19:07:07.410 31988-31988/com.positivelymade.homeless2 E/AndroidRuntime: 致命异常: main 进程:com.positivelymade.homeless2,PID:31988 java.lang.RuntimeException:将结果 ResultInfo{who=null, request=9005, result=-1, data=Intent { (has extras) }} 传递到活动 {com.positivelymade.homeless2/com.positivelymade.homeless2.MainActivity 失败}:android.os.BadParcelableException:解组时 ClassNotFoundException:com.google.android.gms.games.snapshot.SnapshotMetadataEntity 在 android.app.ActivityThread.deliverResults(ActivityThread.java:4605) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) 在 android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7045) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964) 引起:android.os.BadParcelableException:解组时ClassNotFoundException:com.google.android.gms.games.snapshot.SnapshotMetadataEntity 在 android.os.Parcel.readParcelableCreator(Parcel.java:2855) 在 android.os.Parcel.readParcelable(Parcel.java:2781) 在 android.os.Parcel.readValue(Parcel.java:2684) 在 android.os.Parcel.readArrayMapInternal(Parcel.java:3053) 在 android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288) 在 android.os.BaseBundle.unparcel(BaseBundle.java:232) 在 android.os.BaseBundle.containsKey(BaseBundle.java:504) 在 android.content.Intent.hasExtra(Intent.java:7923) 在 com.positivelymade.homeless2.MainActivity.onActivityResult(MainActivity.java:222) 在 android.app.Activity.dispatchActivityResult(Activity.java:7759) 在 android.app.ActivityThread.deliverResults(ActivityThread.java:4598) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:4647) 在 android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7045) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

【问题讨论】:

  • 您找到解决方案了吗?我有同样的问题。
  • 我使用 Firebase 构建了一个自定义保存游戏和加载游戏系统。

标签: android google-play google-play-services google-play-games


【解决方案1】:

就我而言,它不仅在我的发布版本中工作,因为它使用了 pro Guard。我通过添加 here 描述的 pro Guard 配置解决了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2016-05-14
    • 2014-06-05
    • 2020-04-17
    • 2023-03-13
    • 2019-03-08
    • 2019-11-19
    相关资源
    最近更新 更多