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) ба баъд, бояд иҷозатҳоро дар вақти иҷро аз корбар пурсед.