1

我在我的应用程序中使用广播接收器来检测来电,它工作正常。但问题是我无法将操作发送到活动。我的意思是..我想在活动中做一些事情而不是在接收器中。我阅读了许多教程,但它们都在接收器中执行操作。任何的想法 ?

4

3 回答 3

4

您可以将 a 声明BroadcastReceiverActivity. 在这种情况下,您可以直接调用活动的方法:

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() {
    }
}
于 2013-01-21T14:34:55.787 回答
0

您可以开始Activity使用并在额外字段Intent中放置命令代码。Intent然后,您Activity可以根据命令代码决定行为,如果不存在,则诉诸默认行为。

于 2013-01-21T14:25:57.827 回答
0

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

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

请注意,尽管用户会期望电话应用程序启动,因为他们正在接听电话。通过将您自己的活动倾倒在股票拨号器应用程序之上来劫持电话很可能是一个坏主意。

于 2013-01-21T14:27:27.910 回答