Sobes.tech
Junior — Middle

Wie implementiert man eingehende und ausgehende Anrufe auf der Android-Plattform?

sobes.tech KI

Antwort von AI

Um Android werden eingehende und ausgehende Anrufe mit den standardmäßigen Plattform-APIs umgesetzt.

Ausgehende Anrufe: Um einen ausgehenden Anruf zu tätigen, kann ein Intent mit der Aktion Intent.ACTION_CALL oder Intent.ACTION_DIAL verwendet werden.

  • ACTION_DIAL öffnet die Telefonanwendung mit der Nummer, tätigt aber keinen automatischen Anruf.
  • ACTION_CALL initiiert den Anruf sofort, erfordert jedoch die Berechtigung CALL_PHONE.

Beispielcode für einen ausgehenden Anruf:

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 {
    // Berechtigung beim Nutzer anfragen
}

Eingehende Anrufe: Um eingehende Anrufe zu verarbeiten, sollte TelephonyManager und PhoneStateListener oder BroadcastReceiver verwendet werden, um den Anrufstatus zu überwachen.

Beispiel mit 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:
                // Eingehender Anruf
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Anruf aktiv
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Anruf beendet oder keine Anrufe
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Für eine vollständige Funktionalität mit Anrufen können zusätzliche Berechtigungen erforderlich sein, z.B. READ_PHONE_STATE.

Es ist wichtig zu beachten, dass ab Android 6.0 (API 23) Berechtigungen zur Laufzeit vom Nutzer angefordert werden müssen.