Sobes.tech
Junior — Middle

Hogyan valósítható meg a bejövő és kimenő hívások végrehajtása az Android platformon?

sobes.tech MI

Válasz az MI-től

Androidon a bejövő és kimenő hívásokat a platform szabványos API-jain keresztül lehet kezelni.

Kimenő hívások: A kimenő hívás indításához használhat egy Intentet az Intent.ACTION_CALL vagy Intent.ACTION_DIAL művelettel.

  • Az ACTION_DIAL megnyitja a telefon alkalmazást a számmal, de nem kezdeményez automatikusan hívást.
  • Az ACTION_CALL azonnal elindítja a hívást, de engedélyt igényel a CALL_PHONE.

Példa kód kimenő híváshoz:

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 {
    // Engedély kérés a felhasználótól
}

Bejövő hívások: A bejövő hívások kezeléséhez használja a TelephonyManager-t és a PhoneStateListener-t vagy a BroadcastReceiver-t a hívás állapotának figyelésére.

Példa a PhoneStateListener-rel:

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:
                // Bejövő hívás
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Hívás aktív
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Hívás befejeződött vagy nincs hívás
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

A teljes körű működéshez további engedélyek szükségesek lehetnek, például a READ_PHONE_STATE.

Fontos megjegyezni, hogy az Android 6.0 (API 23) verziójától kezdve az engedélyeket futás közben kell kérni a felhasználótól.