Android中的应用之间的互动

时间:2016-11-28 18:42:24

标签: java android android-intent

我正在开发两个Android应用程序让我们称它们为应用程序A和应用程序B. 应用程序A打开应用程序B通过和共享意图并通过一个包传递它,直到这一点它没关系,工作。 现在,我想在应用程序B中实现一些操作,一旦这些操作完成关闭应用程序B并返回操作已完成的消息,并将这些操作的结果发送到应用程序A但我不知道如何解决它或如何寻找。 我想到了另一个意图,但它会重新打开我的应用程序并删除我以前的屏幕内容。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试使用ResultReceiver

https://developer.android.com/reference/android/os/ResultReceiver.html

Messenger

https://developer.android.com/reference/android/os/Messenger.html

在为一个应用程序开发SDK时,我只使用ResultReceiver。在第一个应用中,您创建了ResultReceiver的实例:

public ResultReceiver generateParcelableReceiver(ResultReceiver actualReceiver) {
    Parcel parcel = Parcel.obtain();
    actualReceiver.writeToParcel(parcel, 0);
    parcel.setDataPosition(0);
    ResultReceiver receiverForSending = ResultReceiver.CREATOR.createFromParcel(parcel);
    parcel.recycle();
    return receiverForSending;
}

然后将其作为额外参数传递给Intent

requestLogin.putExtra("EXTRA_TARGET_RECEIVER", mAndroidUtils.generateParcelableReceiver(emptyReceiver));

emptyReceiver的位置:

    ResultReceiver emptyReceiver = new ResultReceiver(null) {
        @Override
        protected void onReceiveResult(int resultCode, Bundle resultData) {
            //do nothing
        }
    };

如您所见,它会收到Bundle。在第二个应用程序中,检索接收器,并在需要时传递结果。

请确保您使用android.support.v4.os.ResultReceiver,因为它有另一个实现(具有不同的包名称),并且它不能很好地工作。此实现包含在:

compile 'com.android.support:appcompat-v7:23.1.1'