首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android.os.BadParcelableException (Pro卫士+扩展ResultReceiver)

android.os.BadParcelableException (Pro卫士+扩展ResultReceiver)
EN

Stack Overflow用户
提问于 2016-09-12 14:26:28
回答 1查看 292关注 0票数 0

我有一个简单的类扩展ResultReceiver,用于在服务和某些活动之间进行通信:

代码语言:javascript
复制
import android.os.Bundle; 
import android.os.Handler; 
import android.support.v4.os.ResultReceiver;

@SuppressLint("ParcelCreator")
public class DataSyncResultReceiver extends ResultReceiver {

    private Receiver mReceiver;

    public DataSyncResultReceiver(Receiver receiver, Handler handler) {
        super(handler);
        setReceiver(receiver);
    }

    public interface Receiver {
        void onReceiveResult(int resultCode, Bundle resultData);
    }

    public void setReceiver(Receiver receiver) {
        mReceiver = receiver;
    }

    public boolean hasReceiver() {
        return mReceiver != null;
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        if (mReceiver == null) {
            Log.e("DataSyncResultReceiver", "Receiver is null");
        } else {
            mReceiver.onReceiveResult(resultCode, resultData);
        }
    }
}

如果不对minifyEnabled true使用pro卫士,它的工作非常好,但是如果我使用它,则在启动后会发生以下崩溃:

android.os.BadParcelableException: Parcelable协议需要一个名为DataSyncResultReceiver类上的创建者的Parcelable.Creator对象

我尝试了以下保护规则,但没有成功:

代码语言:javascript
复制
-keep class **$$Parcelable { *; }

-keep class * implements android.os.Parcelable {
   public static final android.os.Parcelable$Creator *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

有人能帮我这个忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-12 18:19:17

通过添加固定

代码语言:javascript
复制
-keep public class * extends android.support.v4.os.ResultReceiver
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39452685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档