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) და ახალი ვერსიებისთვის ნებართვების მოთხოვნა უნდა მოხდეს გამოყენებლისგან აპლიკაციის მუშაობის დროს.