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) трябва да се искат разрешения от потребителя по време на изпълнение.