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