#android-dialer
#android-дозвонщик
Вопрос:
Я создал пользовательский дозвонщик, основанный на следующем примере: https://github.com/Abror96/CustomPhoneDialer . Он работает отлично, и я могу использовать его в качестве дозвона по умолчанию. Все работает гладко, входящие / исходящие вызовы. Пока я не пропустил вызовы, когда телефон выключен. В poweron он уведомляет об этом и просто останавливается при первом входящем пропущенном вызове и перезагружается через некоторое время. Кажется, мне чего-то не хватает. Исправить ситуацию помогает только возврат старого дозвона по умолчанию. Я провел некоторое расследование с помощью logcat, и я думаю, что нашел что-то:
NotificationManager: com.android.server.telecom: notify(1, Notification(channel=TelecomMissedCalls pri=0 contentView=null vibrate=null sound=null defaults=0x4 flags=0x11 color=0xff2a56c6 vis=PRIVATE publicVersion=Notification(channel=null pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 color=0xff2a56c6 vis=PRIVATE)))
NotificationService: enqueueNotificationInternal: pkg=com.android.server.telecom id=1 notification=Notification(channel=TelecomMissedCalls pri=0 contentView=null vibrate=null sound=null defaults=0x4 flags=0x11 color=0xff2a56c6 vis=PRIVATE publicVersion=Notification(channel=null pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x10 color=0xff2a56c6 vis=PRIVATE))
Watchdog: at com.android.server.telecom.TelecomServiceImpl$1.getCallState(TelecomServiceImpl.java:811)
TelecomManager: RemoteException attempting to get the default dialer package name.
После этого огромная трассировка стека с также:
TelecomManager: Error calling ITelecomService#getCallCapablePhoneAccounts(false)
TelecomManager: android.os.DeadObjectException
TelecomManager: at android.os.BinderProxy.transactNative(Native Method)
TelecomManager: at android.os.BinderProxy.transact(Binder.java:766)
TelecomManager: at com.android.internal.telecom.ITelecomService$Stub$Proxy.getCallCapablePhoneAccounts(ITelecomService.java:796)
снова с отслеживанием стека после.
Поэтому я думаю, что мне может не хватать некоторой реализации. Тем не менее, я понятия не имею, что еще нужно реализовать. Если я посмотрю на документацию api и примеры кода, нигде не упоминается, что что-то нужно сделать для пропущенных вызовов. Существует действие «ACTION_SHOW_MISSED_CALLS_NOTIFICATION», которое информирует пакет о пропущенных вызовах, но это только локальная трансляция. Так что ничего не нужно.
Может кто-нибудь пролить свет на то, что происходит?
Спасибо!