Sobes.tech
Junior — Middle

Kako implementirati primanje i upućivanje poziva na Android platformi?

sobes.tech АИ

Одговор од АИ

Na Androidu se dolazni i odlazni pozivi obrađuju pomoću standardnih API-ja platforme.

Odlazni pozivi: Za obavljanje odlaznog poziva možete koristiti Intent sa akcijom Intent.ACTION_CALL ili Intent.ACTION_DIAL.

  • ACTION_DIAL otvara telefonsku aplikaciju sa brojem, ali ne inicira poziv automatski.
  • ACTION_CALL odmah pokreće poziv, ali zahteva dozvolu CALL_PHONE.

Primer koda za odlazni poziv:

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 {
    // Zatražiti dozvolu od korisnika
}

Dolazni pozivi: Za obradu dolaznih poziva potrebno je koristiti TelephonyManager i PhoneStateListener ili BroadcastReceiver za praćenje stanja poziva.

Primer sa 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:
                // Dolazni poziv
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Poziv je aktivan
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Poziv je završен ili nema poziva
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Za potpun rad sa pozivima, mogu biti potrebna dodatna odobrenja, poput READ_PHONE_STATE.

Važno je napomenuti da od Androida 6.0 (API 23) morate tražiti odobrenja od korisnika u toku izvršavanja.