如何获取从onReceive()触发的Intent的名称或类型

时间:2012-09-05 07:19:45

标签: android android-intent broadcastreceiver

我需要创建一个BroadcastReceiver来监听手机接听或拨打电话的时间,因此我可以记录它何时开始以及何时结束。我意识到两个接收器看起来几乎相同所以不是为传入和传出调用创建两个单独的BroadcastReceiver,我可以为两者创建一个并使我的操作取决于被触发的事件。

我在清单中为intent-filterandroid.intent.action.PHONE_STATE注册了android.intent.action.NEW_OUTGOING_CALL,但如何从onReceive()中找出Intent被解雇的内容?

@Override
public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();

    // get the intent fired--incoming or outgoing call?
    // then, save it in a variable and perform corresponding actions
}

3 个答案:

答案 0 :(得分:7)

只需使用intent.getAction();

String action=intent.getAction();

if(action.equalsIgnoreCase(Intent.ACTION_NEW_OUTGOING_CALL)){

//dosomething here
}
else if(action.equalsIgnoreCase(second action)){

//do something here
}

答案 1 :(得分:2)

使用intent.getAction()将您的操作与equals()进行比较。

答案 2 :(得分:0)

你也可以做一件事就是在设置挂起意图时将一个字符串参数放到bundle中,这样就可以知道OnReceive调用的意图。也可以使用“intent.getAction()” 希望它有所帮助:)