Как программно отвечать или отклонять входящие вызовы в Android 9 ?

#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-вызове?