2

所以现在我在清单文件中声明了我的 BroastcastReceiver ......

   <receiver android:name=".MyReceiver">
    <intent-filter>
        <action android:name="android.intent.action.CALL_BUTTON" />
    </intent-filter>
   </receiver>

我想在按下呼叫按钮时捕捉到意​​图。

这是我的代码...

 public class MyReceiver extends BroadcastReceiver {

     @Override
     public void onReceive(Context context, Intent intent) {

         Toast.makeText(context, "intent received", Toast.LENGTH_LONG);

         if(intent.getAction().equals("android.intent.action.CALL_BUTTON")) {
             Toast.makeText(context, "call button pressed", Toast.LENGTH_LONG);
         }

     }

 }

但是,当我按下通话按钮时,我没有看到吐司。我错过了什么?

这是使用此问题的答案的延续...

如何使用来自服务或广播接收器的意图?

4

2 回答 2

4

简短的回答是你不能做你想做的事。

“ACTION_CALL_BUTTON”动作是“活动开始动作”而不是“广播动作”。它可用于 Intent 用于startActivity启动应响应按下的呼叫按钮的 Activity。您想要的是在按下呼叫按钮时收到通知,并且系统不会广播 Intent 来宣布这一点。

或者,您可以intent-filter在 Activity 中包含相同的内容,以便在用户按下呼叫按钮时将其作为选项供用户选择。

当用户按下通话按钮时,您希望做什么?

于 2009-12-15T21:40:26.417 回答
1

根据文档,ACTION_CALL_BUTTON不是广播动作;相反,它是一个活动动作。

请参阅Dianne在另一个线程中关于此的消息。

于 2009-12-15T21:22:19.830 回答