3

我有 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(签名或未签名)并在同一设备上运行时,我收到以下错误:

引起:android.os.BadParcelableException:Parcelable 协议需要在类 com.google.android.gms.maps.model.LatLngBounds 上名为 CREATOR 的 Parcelable.Creator 对象

这在线上发生:

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

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

有任何想法吗?

4

1 回答 1

0

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

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

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

于 2015-11-15T12:14:06.210 回答