使用BroadcastReceiver的onActivityResult

时间:2013-08-18 08:53:21

标签: android android-activity broadcastreceiver

所以在我的主Activity中,使用Intent,我启动了一些Service对象,它响应某些系统事件(当然在后台运行)并发送一条正确的消息到主要活动中注册的BroadcastReceiver。我尝试做的是在广播接收器的startActivityForResult方法中onReceive。我有兴趣在onReceive中启动的活动是一些其他应用程序,它处理我的数据(由服务发送到广播接收器)并返回成功/失败消息。

问题是,应该获取成功/失败消息的onActivityResult仅在我打开主活动时运行。我想要做的是,无论我的主要活动是在顶部还是在后台运行(不在堆栈顶部),都可以获得结果。换句话说,我希望onActivityResult在后​​台执行。

这是一个想法(我省略了不必要的部分和变量,它们工作正常):

public class MainActivity extends Activity {

    ...

    public BroadcastReceiver br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(something)) {
                String text = intent.getStringExtra(some_key);

                Intent anotherApp = new Intent(some_configuration);

                startActivityForResult(anotherApp, request_code);
            }
        }
    };

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        // something should happen here

        // however this method fires only when MainActivity is on top
    }
}

1 个答案:

答案 0 :(得分:0)

  

我尝试做的是在广播接收器中的onReceive方法中使用startActivityForResult。

除非用户点击某些内容导致该活动出现,否则不要显示活动。在没有事先警告的情况下,不要在用户正在做的任何其他事情中断用户。

  

我想要做的是获得结果,无论我的主要活动是在顶部还是在后台运行(不在堆栈顶部)。换句话说,我希望onActivityResult在后台执行。

不支持,抱歉。