Sobes.tech
Junior — Middle

Como implementar chamadas de entrada e saída na plataforma Android?

sobes.tech IA

Resposta da IA

Para realizar chamadas de entrada e saída no Android, são utilizadas as APIs padrão da plataforma.

Chamadas de saída: Para fazer uma chamada de saída, pode usar um Intent com a ação Intent.ACTION_CALL ou Intent.ACTION_DIAL.

  • ACTION_DIAL abre a aplicação do telefone com o número, mas não faz a chamada automaticamente.
  • ACTION_CALL inicia a chamada imediatamente, mas requer a permissão CALL_PHONE.

Exemplo de código para uma chamada de saída:

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+1234567890"));
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
    context.startActivity(callIntent);
} else {
    // Solicitar permissão ao utilizador
}

Chamadas de entrada: Para lidar com chamadas de entrada, deve usar TelephonyManager e PhoneStateListener ou BroadcastReceiver para ouvir o estado da chamada.

Exemplo usando PhoneStateListener:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener callStateListener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String phoneNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                // Chamada de entrada
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Chamada ativa
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Chamada terminada ou sem chamadas
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Para funcionamento completo com chamadas, podem ser necessários permissões adicionais, como READ_PHONE_STATE.

É importante notar que, a partir do Android 6.0 (API 23), é necessário solicitar permissões ao utilizador em tempo de execução.