从接收者发送行动到活动?

时间:2013-01-21 14:22:02

标签: android

我在我的应用程序中使用广播接收器来检测接入呼叫,它工作正常。但问题是我无法向活动发送动作。我的意思是......我想做一些不在接收器中的活动。我阅读了很多教程,但他们都在接收器中执行动作。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您可以将BroadcastReceiver声明为Activity的内部类。在这种情况下,您可以直接调用activity的方法:

public class MyActivity extends Activity {
    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            activityMethod();
        }
    };

    private final IntentFilter filter = new IntentFilter("android.intent.action.PHONE_STATE");

    @Override
    protected void onStart() {
        super.onResume();
        registerReceiver(receiver, filter);
    }

    @Override
    protected void onStop() {
        super.onPause();
        unregisterReceiver(receiver);
    }

    private void activityMethod() {
    }
}

答案 1 :(得分:0)

您可以使用Activity启动Intent,并在Intent个额外字段中输入命令代码。在Activity中,您可以根据命令代码决定行为,或者如果不存在则采用默认行为。

答案 2 :(得分:0)

您可以通过正常方式从接收者开始活动:

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, YourActivity.class);
    startActivity(i);
}

请注意,用户可能会希望手机应用程序启动,因为他们正在接听电话。通过将自己的活动转储到股票拨号器应用程序之上来劫持电话是非常不错的主意。