Sobes.tech
Junior — Middle

Cum se implementează efectuarea apelurilor inbound și outbound pe platforma Android?

sobes.tech AI

Răspuns de la AI

Pe Android, apelurile de intrare și de ieșire sunt gestionate folosind API-urile standard ale platformei.

Apeluri de ieșire: Pentru a efectua un apel de ieșire, puteți folosi un Intent cu acțiunea Intent.ACTION_CALL sau Intent.ACTION_DIAL.

  • ACTION_DIAL deschide aplicația telefonului cu numărul, dar nu inițiază automat apelul.
  • ACTION_CALL inițiază imediat apelul, dar necesită permisiunea CALL_PHONE.

Exemplu de cod pentru un apel de ieșire:

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 {
    // Solicită permisiunea utilizatorului
}

Apeluri de intrare: Pentru a gestiona apelurile de intrare, trebuie să folosiți TelephonyManager și PhoneStateListener sau BroadcastReceiver pentru a asculta starea apelului.

Exemplu cu 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:
                // Apel de intrare
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Apel activ
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Apel încheiat sau fără apeluri
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Pentru funcționare completă cu apeluri, pot fi necesare permisiuni suplimentare, cum ar fi READ_PHONE_STATE.

Este important de reținut că, începând cu Android 6.0 (API 23), trebuie să solicitați permisiuni de la utilizator în timpul execuției.