Funzione di chiamata telefonica in Android utilizzando Java

Jan 19 2023
Implementazione della funzione di chiamata telefonica in-app utilizzando Java in Android. Il servizio di chiamata è una delle funzionalità principali di Android ed è molto comunemente utilizzato nelle applicazioni Android.

Implementazione della funzione di chiamata telefonica in-app utilizzando Java in Android.

Il servizio di chiamata è una delle funzionalità principali di Android ed è molto comunemente utilizzato nelle applicazioni Android. Questa funzione consente all'utente di effettuare chiamate dall'interno dell'applicazione Android. Ci possono essere due approcci per chiamare qualcuno tramite l'applicazione Android. Uno in cui il numero da comporre è predefinito e non richiede l'input dell'utente . Ad esempio, sollevare una domanda o supportare l'assistenza clienti. Il secondo approccio consiste nel chiamare qualsiasi numero valido di tua scelta. In questo approccio l'utente dovrebbe inserire un numero che deve essere composto. In Java entrambi possono essere implementati dal pacchetto integrato stesso.

Dobbiamo concedere le autorizzazioni per consentire all'applicazione di utilizzare la funzione di chiamata Android integrata. Quindi per prima cosa chiederemo all'utente l'autorizzazione CALL_PHONE aggiungendo il seguente codice di autorizzazione nel file AndroidManifest.xml .

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

In questo abbiamo aggiunto due pulsanti e assegnato un id per entrambi i pulsanti. Uno per chiamare il numero predefinito e l'altro per chiamare tramite l'input dell'utente.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="24dp"
        android:textStyle="bold"
        android:text="@string/call_feature" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_marginTop="20dp"
        android:text="@string/feature" />

    <Button
        android:id="@+id/btnCall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:text="@string/contact_us"/>

    <EditText
        android:id="@+id/edtPhoneNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_marginTop="20dp"
        android:hint="@string/dynamicCall"
        android:text="" />

    <Button
        android:id="@+id/btnCallDynamic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:text="@string/call"/>
</LinearLayout>

Useremo un Android Intent to call. Un intent Android include il codice necessario per eseguire un'azione e descrive i dati in un oggetto Intent richiesto dal sistema. Un intento ti consente di avviare un'attività in un'altra app descrivendo una semplice azione che desideri eseguire in un oggetto Intento.

Qui, stiamo creando un Intent e descrivendo l'azione ACTION_CALL nell'oggetto Intent.

Intent callIntent = new Intent(Intent.ACTION_CALL);

callIntent.setData(Uri.parse("tel: 9999999999"));

ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);

startActivity(callIntent);

package com.example.androidphonecalls;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

// Initialized edittext and buttons
    Button call, dynamicCall;
    EditText phoneNumber;
    private static final int REQUEST_PHONE_CALL = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// Getting instance of button and edit text
        call = findViewById(R.id.btnCall);
        phoneNumber = findViewById(R.id.edtPhoneNumber);
        dynamicCall = findViewById(R.id.btnCallDynamic);

// Here we are adding onClick listener on the button to call predefined number
        call.setOnClickListener(view -> {
            Intent callIntent = new Intent(Intent.ACTION_CALL);
// Here we have defined the number to be called
            callIntent.setData(Uri.parse("tel: 9999999999"));
// Checking for the permission
            ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);
// Starting the call Intent
            startActivity(callIntent);
        });

// Here we are adding onClick listener on the button to call via user input
        dynamicCall.setOnClickListener(view -> {
// Take value from user input
            String retrieveNumber = phoneNumber.getText().toString();
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:" + retrieveNumber));
// Checking  for permissions
            ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);
// Starting the call Intent
            startActivity(callIntent);
        });
    }
}

Grazie !