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