Как выполнить приведение в IntentService ::handleIntent CustomResultReceiver, переданный как намеренный дополнительный

#android

#Android

Вопрос:

Я пытаюсь передать полученное Intent::extraParcelable в мой пользовательский RestResultReceiver следующим образом

 public class APIHttpV1Service
    extends IntentService
{

    ...

    protected void onHandleIntent (Intent intent)
    {
        final int apiCall = intent.getIntExtra("uri");
        final RestResultReceiver resultReceiver = intent.getParcelableExtra(RestResultReceiver.EXTRA_ID_RESULT_RECEIVER);

    //  check if the uri is correct
        if( apiCall == -1)
        {
        //  TODO call failed as we didn't provide any URI
            resultReceiver.send(RestStatus.ERROR, Bundle.EMPTY);
        }

        ...

    }
}
  

и это RestResultReceiver

 public class RestResultReceiver
    extends ResultReceiver
{
    private static final String TAG                     = "com...RestResultReceiver";
    public static final String EXTRA_ID_RESULT_RECEIVER = "com...RestResultRecevier.Receiver";

    private Receiver __mReceiver;

    public RestResultReceiver(Handler handler)
    {
        super(handler);
    }

    public void clearReceiver()
    {
        __mReceiver = null;
    }

    /**
     * Set the receiver
     * @param receiver the object getting called back using onReceiveResult
     */
    public void setReceiver( Receiver receiver )
    {
        __mReceiver = receiver;
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData)
    {
        if (__mReceiver != null)
        {
            __mReceiver.onReceiveResult(RestStatus.getEnum(resultCode), resultData);
        }
        else
        {
            Log.w(TAG, "Dropping result on floor for code "   resultCode   ": "
                      resultData.toString());

        }
    }

    public void send(RestStatus resultStatus, Bundle resultData)
    {
        super.send(resultStatus.getCode(), resultData);
    }

    /**
     * Interface to implement for objects doing rest service call
     */
    public interface Receiver
    {
        public void onReceiveResult(RestStatus resultStatus, Bundle resultData);
    }
}
  

Во время выполнения у меня есть java.lang.Исключение ClassCastException. Мне просто интересно, почему я могу получить свой RestResultReceiver.
Если я использую

 final ResultReceiver resultReceiver = intent.getParcelableExtra(RestResultReceiver.EXTRA_ID_RESULT_RECEIVER);
  

он не выдает никаких ошибок, но я, очевидно, не могу вызвать свою пользовательскую функцию отправки.

Есть идеи?

Большое спасибо за любую помощь, которую вы могли бы предоставить 🙂