Telefonata Android: avviare una chiamata con Intent e Java

Questa guida pratica ti mostra come avviare una telefonata Android utilizzando un Intent in Java, partendo dall’impostazione del numero fino all’apertura dell’app Telefono. In primo luogo, vedremo quali permessi configurare, in particolare CALL_PHONE nel file AndroidManifest. Di conseguenza, dovrai gestire in sicurezza l’autorizzazione dell’utente. Il tutorial su avviare chiamata Android è pensato per sviluppatori alle prime armi e per chi vuole un ripasso rapido del codice essenziale. In questo modo, potrai implementare la funzionalità in modo corretto e professionale. Continua a leggere e segui passo passo la guida.

Configurazione del Manifest per la Telefonata Android

In questo esempio andiamo ad utilizzare Internet.ACTION_CALL per aggiungere un pulsante di chiamata su un applicazione. Inoltre, dovrai inserire le autorizzazioni sul file Android Manifest, in particolare la seguente:
<uses-permission android:name=”android.permission.CALL_PHONE”/>
Di seguito vediamo il file activity_main.xml:
<?xml version=”1.0″ encoding=”utf-8″?>

Layout XML per Avviare una Chiamata Android

Per prima cosa, definiamo il layout principale con il seguente codice:
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:gravity=”center”
android:orientation=”vertical”>

In aggiunta, aggiungiamo i controlli EditText e Button al layout:
<EditText
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:id=”@+id/txt”
android:hint=”Enter Number”
android:textAppearance=”?android:attr/textAppearanceMedium”/>
<Button
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Call”
android:id=”@+id/btn”/>
</LinearLayout>

Codice Java per la Telefonata Android

Vediamo ora il file MainActivity.java. Innanzitutto, definiamo il package:
package com.example.phoneCall.activities;

In seguito, inseriamo tutti gli import necessari:
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.example.phoneCall.R;
import android.widget.*;
import android.view.View.*;
import android.view.*;
import android.content.*;
import android.net.*;
import androidx.core.app.*;
import android.*;
import android.content.pm.*;

Passiamo ora alla classe principale. Innanzitutto dichiariamo le variabili e il metodo onCreate:
public class MainActivity extends AppCompatActivity {

EditText txt;
Button btn;

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

txt=findViewById(R.id.txt);
btn=findViewById(R.id.btn);

Di conseguenza, impostiamo il listener sul pulsante:
btn.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View view){

String string=txt.getText().toString();

Come funziona il Codice della Chiamata Android

A questo punto verifichiamo il permesso e avviamo la chiamata. In primo luogo, controlliamo se il permesso è stato concesso:
if
(ActivityCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.CALL_PHONE)!=
PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(
MainActivity.this,new String[]{
Manifest.permission.CALL_PHONE},0);

} else {
   Pertanto, se il permesso è stato già concesso, procediamo con l’avvio della chiamata:
   startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(“tel:” + string)));
   }
}
});
}
    }

Alternativa per la Telefonata Android senza Permessi — ACTION_DIAL

Analizziamo come funziona il codice: il metodo ActivityCompat.checkSelfPermission() verifica se il permesso CALL_PHONE è già stato concesso. Di conseguenza, se non lo è, requestPermissions() mostra il dialogo di sistema all’utente per richiederlo. Solo dopo l’approvazione viene avviata la telefonata tramite Intent.ACTION_CALL con l’URI nel formato tel: seguito dal numero inserito. In particolare, questa gestione è obbligatoria su Android 6.0 (API 23) e versioni successive, quindi dovrai prestare attenzione a questo aspetto.

Alternativa senza permessi — ACTION_DIAL: Se non vuoi gestire il permesso CALL_PHONE, puoi invece usare Intent.ACTION_DIAL al posto di Intent.ACTION_CALL. La differenza fondamentale è che ACTION_DIAL apre semplicemente l’app Telefono con il numero precompilato, lasciando all’utente il compito di premere il tasto verde. Ad esempio, questa è una soluzione più semplice ma meno automatica. Tuttavia, nessun permesso è richiesto con questo approccio, il che comporta meno rischi di sicurezza ma anche meno automazione. Per una telefonata android java completamente automatizzata, pertanto, ACTION_CALL rimane la scelta corretta.