Попытка отключить входящий звонок через несколько секунд после звонка Android 10. Использование CallScreeningService
для фильтрации входящего звонка.
@RequiresApi(Build.VERSION_CODES.N)
class MyCallScreeningService :
CallScreeningService() {
@RequiresApi(Build.VERSION_CODES.Q)
override fun onScreenCall(details: Call.Details?) {
if (details?.callDirection == Call.Details.DIRECTION_INCOMING) {
val phoneNumber = details.handle.schemeSpecificPart
val blockedList = Paper.book().read(Constants.FIELD_BLOCKED_LIST, ArrayList<String>())
if (blockedList.contains(phoneNumber)) {
disconnectCall(details, phoneNumber)
}
}
}
private fun disconnectCall(details: Call.Details, phoneNumber: String) {
Handler().postDelayed({
respondToCall(details, buildResponse())
}, 3000L)
}
private fun buildResponse(): CallResponse {
return CallResponse.Builder()
.setRejectCall(true)
.setDisallowCall(true)
.setSkipNotification(true)
.setSkipCallLog(true)
.build()
}
}
Проблема в том, что я установил время handler
слишком низкий, звонок отключается без звонка на стороне получателя. Хотя, если я установлю его выше, например, на 6 секунд, то появится уведомление о звонке, но отключение не работает.