BroadCastreceiver não recebe intenção
-
19-09-2019 - |
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?
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.