我根据以下示例创建了一个自定义拨号器: https ://github.com/Abror96/CustomPhoneDialer 。它工作得很好,我可以把它作为我的默认拨号器。一切顺利,呼入/呼出。直到我在手机关机时有未接来电。开机时,它会通知它,并在第一个未接来电时停止并在一段时间后重新启动。看来我缺少什么了。仅将旧拨号器恢复为默认值有助于解决我通过 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”通知未接电话包,但这只是本地广播。所以没有必要。有人可以解释发生了什么吗?
谢谢!