Pregunta

Así que ahora he declarado mi BroastcastReceiver en el archivo de manifiesto ...

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

Quiero atrapar la intención cuando se pulsa el botón de llamada.

Aquí está mi código ...

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

     }

 }

Sin embargo, no veo la tostada cuando pulso el botón de llamada. ¿Me he perdido algo?

Esta es una continuación usando una respuesta de esta pregunta ...

Cómo utilizar Intentos de un servicio o de difusión receptor?

¿Fue útil?

Solución

La respuesta corta es que no se puede hacer lo que estamos tratando de hacer.

La acción de 'ACTION_CALL_BUTTON' es una "acción Actividad de partida" en lugar de una "acción de difusión". Puede ser utilizado en un intento utilizado en startActivity para poner en marcha una actividad que debería responder a la llamada que se presiona el botón. Lo que queremos es que se le notifique cuando se pulsa el botón de llamada, y el sistema no emite una intención de anunciar que.

Como alternativa, puede incluir el mismo intent-filter en una actividad para que se subirá como una opción para que el usuario seleccione cuando presionan el botón de llamada.

¿Qué espera hacer cuando el usuario pulsa el botón de llamada?

Otros consejos

Por la documentación, ACTION_CALL_BUTTON no es una emisión acción; más bien, se trata de una acción actividad.

mensaje de Dianne sobre esto en otro hilo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top