Sobes.tech
Junior — Middle

Kā īstenot ienākošos un izejo zvanu funkcionalitāti Android platformā?

sobes.tech AI

Atbilde no AI

Android platformā tiek izmantoti standarta API, lai veiktu ienākošos un izejošos zvanus:

Izejošie zvanus: Izejošo zvanus var uzsākt, izmantojot Intent ar Intent.ACTION_CALL vai Intent.ACTION_DIAL:

  • ACTION_DIAL atver tālruņa lietotni ar norādīto numuru, bet automātiski neveic zvanu:
  • ACTION_CALL tūlīt uzsāk zvanu, bet prasa CALL_PHONE atļauju:

Izejošā zvana piemērs kodā:

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 {
    // Pieprasīt atļauju no lietotāja
}

Ienākošie zvanus: Ienākošo zvanu apstrādei jāizmanto TelephonyManager un PhoneStateListener vai BroadcastReceiver, lai klausītos zvana stāvokli:

PhoneStateListener piemērs:

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:
                // Ienākošais zvans
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // Zvana aktivitāte
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                // Zvana beigas vai nav zvanu
                break;
        }
    }
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

Var būt nepieciešamas papildu atļaujas, piemēram, READ_PHONE_STATE:

Svarīgi: Android 6.0 (API 23) un jaunākās versijās atļaujas ir jāpieprasa lietotājam laikā, kad lietojumprogramma darbojas.