#android #call #phone-call #telephonymanager
#Android #вызов #телефонный звонок #telephonymanager
Вопрос:
Я создаю приложение, которое программно принимает входящий вызов, не являясь вызывающим приложением по умолчанию. Это было проще достичь в Android 9 и ниже с tm.acceptRingingCall()
помощью and tm.endCall
. К сожалению, эти методы устарели, начиная с Android 10. Согласно документации, это можно сделать с помощью InCallService
API. Но возможно ли это сделать, не являясь вызывающим приложением по умолчанию?
Ответ №1:
К сожалению, ответ отрицательный. Начиная с Android 10, единственным способом обработки телефонных звонков является использование InCallService
API. Я создал базовое приложение для набора номера на Java, в котором объясняются основы обработки вызовов в качестве приложения для набора номера по умолчанию (ссылка: https://github.com/adnan-creator/java-custom-dialer ). Итак, на данный момент лучшим решением является приложение дозвона по умолчанию, пока вам не понадобится функциональность программного приема или отклонения вызовов. Затем вы можете перенести элементы управления обратно во встроенное приложение дозвона.
Это можно сделать, предварительно сохранив имя пакета встроенного дозвона, прежде чем использовать управление telecomManager.getDefaultDialerPackage()
.
Затем управление может быть передано обратно во встроенное приложение дозвона
Intent intent = (new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER))
.putExtra(
TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME,
storedPackageName);
this.startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER);
Комментарии:
1. Возможно ли выборочно автоматически отвечать или автоматически отклонять входящий вызов на основе номера вызывающего абонента в SIP-вызове?