我正在尝试做一个新的电话帐户 http://developer.android.com/reference/android/telecom/PhoneAccount.html使用我的实现连接服务 http://developer.android.com/reference/android/telecom/ConnectionService.html。在文档中,它说我需要向 TelecomManager 注册一个新的 PhoneAccount,然后在我的手机应用程序的设置中选择它。
这是我的代码:
TelecomManager telecomManager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
ComponentName componentName = newComponentName("se.example.connectionservicestandalonetest", "se.example.connectionservicestandalonetest.MyConnectionService");
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(componentName, "Admin");
PhoneAccount phoneAccount = PhoneAccount.builder(phoneAccountHandle, "Admin").build();
telecomManager.registerPhoneAccount(phoneAccount);
正如您所看到的,它创建一个新的 ComponentName 指向我的 ConnectionService 实现,然后创建一个新的 PhoneAccountHandle,我在其中提供 ComponentName 和唯一的帐户名。然后,我在 PhoneAccount 构建中提供 PhoneAccountHandle 以及标签(名称?),以创建新的 PhoneAccount。最后我在 TelecomManager 中注册了帐户。
当我打开手机应用程序时,没有任何变化。我看不出在哪里可以更改电话帐户...有什么想法吗?
Thanks!
我得到了一些信息,我将把它们留在这里供后代使用。
当构建你的PhoneAccount
,您必须添加CAPABILITY_CALL_PROVIDER
如果您自己拨打和接听电话,或者CAPABILITY_CONNECTION_MANAGER
如果您想使用内置拨打或接听电话PhoneAccount
。如果没有其中任何一个,您将不会出现在用户界面中。
据我所知,没有专门的 API 来检查用户是否启用了您的PhoneAccount
。但是,您可以使用TelecomManager
.addNewIncomingCall
以此目的。只需提供一个Bundle
包含一个额外的布尔值(任意命名)并将该布尔值设置为true
如果您确实接到电话或false
如果您只想进行权限检查(反之亦然)。然后你的实现ConnectionService
.onCreateIncomingConnection
可以检查您的额外费用和退货Connection
.createCanceledConnection
如果您只是进行权限检查。这不会在通话记录中注册为呼叫,并且铃声也不会播放。addNewIncomingCall
如果你的PhoneAccount
未启用,如果启用则成功。
如上面的评论所述,您可以提示用户启用您的PhoneAccount
using TelecomManager
.ACTION_CHANGE_PHONE_ACCOUNTS
。因为用户可以启用或禁用您的PhoneAccount
在任何时候,所有需要启用的操作PhoneAccount
(like addNewIncomingCall
)应放置在try
block.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)