Sobes.tech
Junior — Middle

Jak zaimplementować wykonywanie połączeń przychodzących i wychodzących na platformie Android?

sobes.tech AI

Odpowiedź od AI

Aby obsługiwać połączenia przychodzące i wychodzące na Androidzie, używane są standardowe API platformy.

Połączenia wychodzące: Aby wykonać połączenie wychodzące, można użyć Intent z akcją Intent.ACTION_CALL lub Intent.ACTION_DIAL.

  • ACTION_DIAL otwiera aplikację telefonu z numerem, ale nie wykonuje automatycznie połączenia.
  • ACTION_CALL natychmiast inicjuje połączenie, ale wymaga uprawnienia CALL_PHONE.

Przykład kodu dla połączenia wychodzącego:

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 {
    // Poprosić użytkownika o pozwolenie
}

Połączenia przychodzące: Aby obsługiwać połączenia przychodzące, należy użyć TelephonyManager i PhoneStateListener lub BroadcastReceiver do nasłuchiwania stanu połączenia.

Przykład użycia 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:
                // Połączenie przychodzące
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Połączenie aktywne
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Połączenie zakończone lub brak połączeń
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Aby w pełni obsługiwać połączenia, mogą być potrzebne dodatkowe uprawnienia, np. READ_PHONE_STATE.

Ważne jest, aby pamiętać, że od Androida 6.0 (API 23) należy żądać uprawnień od użytkownika w czasie działania aplikacji.