2009-12-15 81 views
1

所以现在我有我的BroastcastReceiver在manifest文件中声明...广播接收器接收不到意图

<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); 
     } 

    } 

} 

不过,我没有看到敬酒时,我打了呼叫按钮。我错过了什么?

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

How to use Intents from a Service or Broadcast Receiver?

回答

4

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

“ACTION_CALL_BUTTON”操作是“活动开始操作”而不是“广播操作”。它可以用于startActivity中用于启动一个活动,该活动将响应正在按下的呼叫按钮。当你按下通话按钮时,你想要通知你什么,系统不会广播一个意图通知。

或者,您可以在活动中包含相同的intent-filter,以使其作为用户在按下通话按钮时进行选择的选项。

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

+0

再一次,你来拯救。这正是我想要做的第一个地方......当按下通话按钮时打开一个活动。 – 2009-12-15 21:47:07

1

%的文档,ACTION_CALL_BUTTON不是广播动作;相反,这是一项活动行动。

请参阅Dianne's message关于此在另一个线程。

+0

谢谢。那么当用户按下“呼叫”按钮时,没有办法启动我的活动吗? – 2009-12-15 21:32:28

+1

对不起,我没有进一步阐述。 Reto的覆盖范围:-) – 2009-12-15 21:50:18