我正在从应用A向app B发送broadCast,应用B有BroadCastReceiver
来处理意图。
现在我在App B onReceive
的{{1}}中进行一些操作,然后我想将结果返回到App A,这样我就可以进行回调,并在结果为正时继续操作。
下面是一些代码。
在App B中:
BroadcastReceiver
在App A中:
public class TripBackupReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
System.out.println("broadcast Received");
// send result back to Caller Activity
}
}
任何人都可以解决这个问题,请指导我一些建议。谢谢!
答案 0 :(得分:1)
为什么不只是(某种程度上)从App A收到的Intent
发送TripBackupReceiver
?
类似的东西:
public class TripBackupReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("broadcast Received");
// send result back to Caller Activity
Intent replyIntent = new Intent("a_specified_action_string");
context.sendBroadcast(replyIntent);
}
}
您可以在应用A的Intent
定义中收到此BroadcastReceiver
。或者使用Context.startActivity(Intent)
方法在应用A中启动活动。
如果调用已经在运行的活动,则可能需要实施onNewIntent()
。
请为此使用已签名的意图,以防止用户入侵您的Intent API。
答案 1 :(得分:0)
我正在寻找类似的东西。 This给了我很大的帮助。
基本上,不是sendBroadcast(Intent)而是尝试使用合适形式的sendOrderedBroadcast(),它允许设置BroadcastReceiver来处理接收器的结果。一个简单的例子:
sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
@SuppressLint("NewApi")
@Override
public void onReceive(Context context, Intent intent) {
Bundle results = getResultExtras(true);
String trail = results.getString("breadcrumb");
results.putString("breadcrumb", trail + "->" + "sometext");
Log.i(TAG, "Final Result Receiver = " + results.getString("breadcrumb", "nil"));
}
}, null, Activity.RESULT_OK, null, null);