【发布时间】:2013-08-18 08:53:21
【问题描述】:
所以在我的主要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
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!您可以在这里发布您已经拥有的代码的相关部分吗?
-
@PetrR。 - 谢谢。我添加了一个带有这个想法的 sn-p。
标签: android android-activity broadcastreceiver