Adicionar Chamada Android

Se você deseja adicionar a funcionalidade de chamada ao seu aplicativo Android, está no lugar certo. Neste artigo, guiaremos você pelo processo de adição de recursos de chamada ao seu aplicativo , incluindo como iniciar uma chamada, receber chamadas e lidar com estados de chamadas.

Ao adicionar o recurso de fazer chamadas telefônicas ao seu aplicativo Android , você pode contar com a funcionalidade integrada da plataforma. O Android fornece a API de telefonia que equipa os desenvolvedores com ferramentas essenciais para fazer e receber chamadas telefônicas programaticamente.

Esta é uma parte crucial do framework Android, fornecendo classes e interfaces que permitem aos desenvolvedores interagir com os serviços de telefonia oferecidos pelo sistema.



Permissão do Android Call_phone

Para fazer uma chamada telefônica programaticamente no Android, você precisa dar o passo inicial de obter permissão para fazer chamadas telefônicas incluindo a permissão CALL_PHONE no arquivo AndroidManifest.xml. Você pode conseguir isso adicionando a seguinte linha de código:

<uses-permission android:name="android.permission.CALL_PHONE" />

Android Adicionar intenção de chamada

Depois de conceder permissão para fazer chamadas telefônicas no arquivo AndroidManifest.xml , você pode usar a classe Intent para iniciar uma chamada telefônica.

A ação ACTION_CALL pode ser usada para iniciar uma chamada telefônica diretamente do aplicativo sem exigir a intervenção do usuário.

Aqui está um exemplo de como você pode fazer uma chamada telefônica usando a classe Intent:

String phoneNumber = "1234567890";
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(intent);

Este código inicia uma chamada telefônica para o número “ 1234567890 ” usando a funcionalidade Intent.ACTION_CALL integrada do Android . Ele primeiro obtém permissão para fazer chamadas telefônicas e, em seguida, cria uma intenção com o número de telefone como um URI. Finalmente, inicia a intenção de iniciar a chamada.

No entanto, é importante observar que a ação ACTION_CALL requer a permissão CALL_PHONE. Essa permissão pode ser perigosa se não for usada corretamente. Como resultado, é altamente recomendável usar a ação ACTION_DIAL. A ação ACTION_DIAL abre o aplicativo discador com o número de telefone pré-preenchido. Isso permite que o usuário inicie a chamada manualmente. O código a seguir mostra como usar a ação ACTION_DIAL:

String phoneNumber = "1234567890";
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(intent);

O exemplo acima começa criando um objeto Intent com a ação ACTION_DIAL para iniciar uma chamada telefônica. Também especificamos o URI de dados “tel:” com o número de telefone concatenado a ele para preencher previamente o número de telefone no aplicativo discador. A variável “phoneNumber” é usada para armazenar o número de telefone para o qual queremos ligar. Por fim, usamos o método startActivity() para iniciar o aplicativo discador no dispositivo e permitir que o usuário inicie a chamada manualmente. Vale a pena notar que a ação ACTION_DIAL não requer nenhuma permissão especial, tornando-a uma opção mais segura de usar em comparação com ACTION_CALL.


Recebendo chamadas recebidas

Para receber chamadas, você precisará criar um BroadcastReceiver que escute a ação de transmissão PHONE_STATE .

Aqui está um código de exemplo que mostra como fazer isso:

 

class CallReceiver : BroadcastReceiver() {

override fun onReceive(context: Context?, intent: Intent?) {
val state = intent?.getStringExtra(TelephonyManager.EXTRA_STATE)
if (state == TelephonyManager.EXTRA_STATE_RINGING) {
val phoneNumber = intent?.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)
// Handle the incoming call
}
}
}

Esse código cria um BroadcastReceiver que escuta a ação de transmissão PHONE_STATE .

Quando uma chamada recebida é recebida, o método onReceive é chamado com uma intenção que contém o número de telefone do chamador.

Você pode então lidar com a chamada recebida no bloco if.


Manipulando Estados de Chamada

Para lidar com estados de chamada, você precisará implementar a classe PhoneStateListener .

Abaixo está um código de exemplo que mostra como fazer isso:

val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val phoneStateListener = object : PhoneStateListener() {
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
when (state) {
TelephonyManager.CALL_STATE_IDLE -> {
// Call ended
}
TelephonyManager.CALL_STATE_RINGING -> {
// Incoming call
}
TelephonyManager.CALL_STATE_OFFHOOK -> {
// Call in progress
}
}
}
}
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE)

Esse código cria um objeto PhoneStateListener que detecta alterações no estado da chamada, inclusive quando uma chamada é iniciada, quando uma chamada recebida é recebida e quando uma chamada é encerrada.

O método onCallStateChanged é chamado sempre que o estado da chamada é alterado e você pode manipular cada estado no bloco when.

Concluindo , adicionar a funcionalidade de chamada ao seu aplicativo Android é um processo direto que pode melhorar muito a experiência do usuário . Seguindo as etapas descritas neste artigo, você pode facilmente iniciar chamadas , receber chamadas e gerenciar estados de chamadas em seu aplicativo.

Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone