我在我的应用程序中使用广播接收器来检测接入呼叫,它工作正常。但问题是我无法向活动发送动作。我的意思是......我想做一些不在接收器中的活动。我阅读了很多教程,但他们都在接收器中执行动作。有什么想法吗?
答案 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);
}
请注意,用户可能会希望手机应用程序启动,因为他们正在接听电话。通过将自己的活动转储到股票拨号器应用程序之上来劫持电话是非常不错的主意。