相关疑难解决方法(0)

跨包的Android ResultReceiver

我在包A(SignerClient)中有一个活动,在包B(MyService)中有一个服务

活动的结果接收者:

private ResultReceiver resultreceiver = new ResultReceiver(null) {
            @Override
            protected void onReceiveResult(int resultCode, Bundle resultData) {
            ...
            }
        };
Run Code Online (Sandbox Code Playgroud)

启动服务:

Intent intent = new Intent("com.example.STARTSERVICE");
intent.putExtra("resultreceiver", resultreceiver);            
startService(intent);
Run Code Online (Sandbox Code Playgroud)

接收结束:

 ResultReceiver rr = (ResultReceiver) intent.getParcelableExtra("resultreceiver");
Run Code Online (Sandbox Code Playgroud)

当客户端和服务器在同一个包中时这样做可以正常工作.但在这种情况下我得到:

FATAL EXCEPTION: IntentService[MyService]
android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.cryptoclient.SignerClient$1
at android.os.Parcel.readParcelable(Parcel.java:1883)
at android.os.Parcel.readValue(Parcel.java:1771)
at android.os.Parcel.readMapInternal(Parcel.java:2008)
at android.os.Bundle.unparcel(Bundle.java:208)
at android.os.Bundle.getParcelable(Bundle.java:1100)
at android.content.Intent.getParcelableExtra(Intent.java:3396)
at org.axades.service.MyService.onHandleIntent(MyService.java:28)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我的想法是否可能?

android ipc android-service

12
推荐指数
2
解决办法
6789
查看次数

标签 统计

android ×1

android-service ×1

ipc ×1