1

我正在从应用程序 A 向应用程序 B 发送广播,应用程序 B 具有BroadCastReceiver处理意图。

现在我onReceive在 App B中进行了一些操作BroadcastReceiver,然后我想将结果返回给 App A,以便我可以进行回调,如果结果为正则继续操作。

下面是一些代码。

在应用程序 B 中:

public class TripBackupReceiver extends BroadcastReceiver {
@Override
    public void onReceive(Context arg0, Intent arg1) {
        System.out.println("broadcast Received");

        // send result back to Caller Activity
    }
}  

在应用程序 A 中:

Intent intent = new Intent("a_specified_action_string");
sendBroadcast(intent);  

任何人都可以解决这个问题,请指导我一些建议。谢谢!!

4

2 回答 2

1

为什么不只是(有点)发送App A 收到的消息IntentTripBackupReceiver

就像是:

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您可以在 App A中的定义中收到此BroadcastReceiver信息。或者使用该Context.startActivity(Intent)方法在 App A 中启动活动。

onNewIntent()如果这会调用已在运行的活动,您可能需要实施。


请为此使用签名意图,以防止用户入侵您的 Intent API。

于 2013-09-18T09:00:32.600 回答
1

我正在寻找类似的东西。对我帮助很大。

基本上,代替 sendBroadcast(Intent) 尝试使用合适的 sendOrderedBroadcast() 形式,它允许设置 BroadcastReceiver 来处理来自 Receiver 的结果。一个简单的例子:

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);  
于 2015-09-03T12:35:42.520 回答