Come implementare le chiamate in entrata e in uscita sulla piattaforma Android?
sobes.tech AI
Risposta dell'AI
Per gestire le chiamate in entrata e in uscita su Android, vengono utilizzate le API standard della piattaforma.
Chiamate in uscita:
Per effettuare una chiamata in uscita, puoi usare un Intent con l'azione Intent.ACTION_CALL o Intent.ACTION_DIAL.
ACTION_DIALapre l'app del telefono con il numero, ma non effettua automaticamente la chiamata.ACTION_CALLavvia immediatamente la chiamata, ma richiede il permessoCALL_PHONE.
Esempio di codice per una chiamata in uscita:
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 {
// Richiedere il permesso all'utente
}
Chiamate in entrata:
Per gestire le chiamate in entrata, si deve usare TelephonyManager e PhoneStateListener o BroadcastReceiver per ascoltare lo stato della chiamata.
Esempio con 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:
// Chiamata in arrivo
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// Chiamata attiva
break;
case TelephonyManager.CALL_STATE_IDLE:
// Chiamata terminata o nessuna chiamata
break;
}
}
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Per un funzionamento completo con le chiamate, potrebbero essere necessari permessi aggiuntivi, come READ_PHONE_STATE.
È importante notare che, a partire da Android 6.0 (API 23), è necessario richiedere i permessi all'utente durante l'esecuzione.