Sobes.tech
Junior — Middle

Как да реализираме извършването на входящи и изходящи обаждания на платформата Android?

sobes.tech AI

Отговор от AI

В Android входящите и изходящите обаждания се обработват чрез стандартните API на платформата.

Изходящи обаждания: За извършване на изходящо обаждане можете да използвате Intent с действие Intent.ACTION_CALL или Intent.ACTION_DIAL.

  • ACTION_DIAL отваря приложението за телефон с номера, но не извършва автоматично обаждане.
  • ACTION_CALL започва обаждането незабавно, но изисква разрешение CALL_PHONE.

Примерен код за изходящо обаждане:

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 {
    // Заявете разрешение от потребителя
}

Входящи обаждания: За обработка на входящи обаждания трябва да използвате TelephonyManager и PhoneStateListener или BroadcastReceiver за проследяване на състоянието на обаждането.

Пример с 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:
                // Входящо обаждане
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Обаждането е активно
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Обаждането е приключило или няма обаждания
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

За пълна функционалност с обаждания може да са необходими допълнителни разрешения, като READ_PHONE_STATE.

Важно е да се има предвид, че от Android 6.0 (API 23) трябва да се искат разрешения от потребителя по време на изпълнение.