android - 部署时谷歌地图出现 BadParcelableException

标签 android google-play-services google-maps-android-api-2

我的 Activity 允许用户选择地理范围,并通过 setResult 函数返回它们:

public class MyActivity extends Activity
.
.

  buttonOk.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds;
            Intent result = new Intent();
            result.putExtra(RESULT_KEY_MAP_BOUNDS, bounds);
            setResult(RESULT_OK, result);
            finish();
        }
    });

调用代码为: . . .

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case ACTIVITY_SELECT_GAME_BOUNDS:
            if (resultCode == RESULT_OK) {
                mapFragment.getView().setVisibility(View.VISIBLE);
                LatLngBounds bounds = 
                        data.getExtras().getParcelable(SelectGameBoundsActivity.RESULT_KEY_MAP_BOUNDS);

当我通过 eclipse 运行时,这工作正常,但是当尝试创建 APK(签名或未签名)并在同一设备上运行时,我收到以下错误:

Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class com.google.android.gms.maps.model.LatLngBounds

这发生在线上:

LatLngBounds bounds = 
                       data.getExtras().getParcelable(SelectGameBoundsActivity.RESULT_KEY_MAP_BOUNDS);

设备正在运行最新的 Google Play 服务。

有什么想法吗?

最佳答案

您可能必须阻止 ProGuard 剥离所需的类。

-keep public class com.google.android.gms.maps.** { public *; }

将此添加到您的 proguard-project.txt 文件中。

关于android - 部署时谷歌地图出现 BadParcelableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16044715/

相关文章:

android - Unity3D + Glass 开发套件预览

android - android中的组表是什么?

google-play-services - 如何在 Google Play 开发者控制台中取消发布应用

android - fragment 中的空指针异常,使用谷歌地图

android - 如何使用 Google Maps API v2 确定经纬度坐标是否在道路上

android - 从另一个 Activity 返回时,MapFragment 的 map 加载延迟

c# - 尝试将代码块从 C# 转换为 Java (Android)

Android支持设计gradle错误

Android Studio - 无法解析 GoogleAuthUtil

Android:Google+ 整合。在仍然连接的情况下调用 connect(),缺少 disconnect()