Pergunta

Então agora eu tenho meu BroastCastreceiver declarado no arquivo manifesto ...

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

Quero pegar a intenção quando o botão de chamada for pressionado.

Aqui está o meu 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);
         }

     }

 }

No entanto, não vejo a torrada quando pressiono o botão de chamada. Perdi alguma coisa?

Esta é uma continuação usando uma resposta desta pergunta ...

Como usar as intenções de um serviço ou receptor de transmissão?

Foi útil?

Solução

A resposta curta é que você não pode fazer o que está tentando fazer.

A ação 'Action_Call_Button' é uma "ação inicial da atividade" em vez de uma "ação de transmissão". Pode ser usado em uma intenção usada em startActivity Para iniciar uma atividade que deve responder ao botão de chamada que está sendo pressionado. O que você deseja é ser notificado quando o botão de chamada é pressionado e o sistema não transmite a intenção de anunciar isso.

Como alternativa, você pode incluir o mesmo intent-filter Em uma atividade para que seja uma opção para o usuário selecionar quando pressionar o botão de chamada.

O que você espera fazer quando o usuário pressiona o botão de chamada?

Outras dicas

Por os documentos, ACTION_CALL_BUTTON não é uma ação de transmissão; Pelo contrário, é uma ação de atividade.

Ver Mensagem de Dianne sobre isso em outro tópico.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top