如何创建一个启用了 SCHEME_SIP uri 的 PhoneAccount,在重启时不会被删除?

问题描述

我在 android 上构建了一个 WebRTC 软电话客户端(使用 React Native),但该服务使用正确的 uri 进行拨号 (不仅仅是电话号码)所以为了获得连接服务集成,我们使用 PhoneAccount 并且我将允许的 uri 类型设置为包括 SCHEME_SIP - 没有它,我无法使用 tel: uri 拨号,因为它不遵循正确的格式 - 弹出一个 UI 警报告诉我。

一切都很好,一切正常,直到手机重新启动并且 PhoneAccount 从列表中消失,如果不再次打开应用程序并启用 PhoneAccount,我们将无法拨打/接听电话。

我使用一个名为 react-native-callkeep 的项目来处理 callkit/connection 服务,您可以在下面看到我添加了对 SIP uri 支持的补丁。

https://github.com/AGProjects/sylk-mobile/blob/master/patches/react-native-callkeep%2B4.0.1.patch#L123

是的,一切正常,直到重新启动并且 adb 在重新启动期间显示这些日志。

01-18 17:31:49.827  2435  2435 D SIP     : [SipAccountRegistry] verifyAndPurgeInvalidPhoneAccounts,deleting account: ComponentInfo{retracted.app.id/io.wazo.callkeep.VoiceConnectionService},***,UserHandle{0}
01-18 17:31:49.829  1520  2898 I Telecom : CallsManager: Sending phone-account ComponentInfo{retracted.app.id/io.wazo.callkeep.VoiceConnectionService},UserHandle{0} unregistered intent as user: TSI.uPA@AQs
01-18 17:31:49.829  1520  2898 I Telecom : CallsManager: Sending phone-account unregistered intent to default dialer: TSI.uPA@AQs

经过一些谷歌搜索后,您会...

https://android.googlesource.com/platform/packages/services/Telephony/+/a294ae5342410431a568126183efe86261668b5d/sip/src/com/android/services/telephony/sip/SipAccountRegistry.java#126

因此,如果您的电话帐户附加了 SIP 方案,而您没有附加相应的 SipProfile,则您的呼叫帐户/phoneAccount 将被删除......很有用。

所以我制作了一个 sip 配置文件,其名称与电话帐户的 ID 相同......但它看起来没有保存在 SipProfileDb(在该代码中引用)......然后在重新启动时,当然它不在数据库中进行检查......我们绕圈子。就我所见,我无法访问该 sipPorofileDb 并且它纯粹用于在本机手机应用程序的设置 UI 中创建的帐户。

A) 我可以将 SipProfileDb 引入我的代码并保存到其中吗?如果这是要完成的;那为什么我找不到有关此的任何文档?

B) 如果我不能,我错过了什么?我可以创建一个启用了 SIP uri 的 PhoneAccount,因为它只能被电信服务删除,这非常奇怪,感觉就像一个错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)