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.