Junior — Middle
Jak implementovat příchozí a odchozí hovory na platformě Android?
sobes.tech AI
Odpověď od AI
Na Androidu se příchozí a odchozí hovory zpracovávají pomocí standardních API platformy.
Odchozí hovory:
Pro uskutečnění odchozího hovoru můžete použít Intent s akcí Intent.ACTION_CALL nebo Intent.ACTION_DIAL.
ACTION_DIALotevře telefonní aplikaci s číslem, ale nezahájí hovor automaticky.ACTION_CALLokamžitě zahájí hovor, ale vyžaduje oprávněníCALL_PHONE.
Příklad kódu pro odchozí hovor:
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 {
// Požádat uživatele o oprávnění
}
Příchozí hovory:
Pro zpracování příchozích hovorů je třeba použít TelephonyManager a PhoneStateListener nebo BroadcastReceiver k sledování stavu hovoru.
Příklad s 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:
// Příchozí hovor
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// Hovor aktivní
break;
case TelephonyManager.CALL_STATE_IDLE:
// Hovor ukončen nebo žádný hovor
break;
}
}
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Pro plnou funkčnost s hovory mohou být potřeba další oprávnění, například READ_PHONE_STATE.
Je důležité si uvědomit, že od Androidu 6.0 (API 23) je nutné žádat o oprávnění za běhu od uživatele.