我从一个应用程序发送一个广播应用B,应用B具有BroadCastReceiver
处理的意图。
现在我做了一些操作onReceive
在应用B的BroadcastReceiver
,然后我想结果返回给应用程序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
}
}
内部应用程序答:
Intent intent = new Intent("a_specified_action_string");
sendBroadcast(intent);
任何人都可以对这个问题的任何解决方案,请指导我一些建议。 谢谢!!
不只是(在某种程度上)为什么要派一个Intent
从TripBackupReceiver
由应用程序A接收?
就像是:
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);
}
}
您可以收到此Intent
在BroadcastReceiver
定义了应用程序A.或可选择地使用Context.startActivity(Intent)
方法来启动应用程序中的A.活动
您可能需要实现onNewIntent()
如果这使得对已经运行的一种呼吁。
请使用签署意向为此,为了防止用户侵入你的意图API。
我一直在寻找类似的东西。 这帮助了我极大。
基本上,代替sendBroadcast(意向)尝试使用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);