我正在尝试在我的自定义电话应用程序中实现自定义 ConnectionService。根据文档 http://developer.android.com/reference/android/telecom/ConnectionService.html我需要在电话设置菜单中选择我注册的电话帐户作为默认帐户。但是,当我注册 PhoneAccount 以使用本机电话堆栈时,PhoneAccount 似乎没有显示可供使用。
让我向您展示我到目前为止所做的工作。此代码注册一个 PhoneAccount"...is not允许管理或拨打来自内置电话堆栈的呼叫”
PhoneAccount.Builder builder = new PhoneAccount.Builder(phoneAccountHandle, "CustomAccount");
builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER);
PhoneAccount phoneAccount = builder.build();
telecomManager.registerPhoneAccount(phoneAccount);
这使得可选择的电话帐户显示在“设置”>“呼叫”>“呼叫帐户”下。使用此帐户发出呼叫确实会绑定到我的 ConnectionService 实现,但无法真正在任何地方进行呼叫。
我实际想要设置的功能是 PhoneAccount.CAPABILITY_CONNECTION_MANAGER,它确实使用内置堆栈。但这样做会完全从菜单中删除该帐户,并使其无法选择默认帐户。
关于我在这里可能做错了什么有什么想法吗?
PS:我之前问题的延续(注册新的电信PhoneAccount) https://stackoverflow.com/questions/36576964/android-register-new-phoneaccount-for-telecom.
更新:这是我的 AndroidManifest.xml 中的声明,以防万一:
<service android:name="se.example.phoneclient.MyConnectionService"
android:label="@string/MyConnectionService"
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService" />
</intent-filter>
</service>
更新:已解决使用 PhoneAccount.CAPABILITY_CONNECTION_MANAGER 的电话帐户确实会自动绑定,尽管文档说它不会。这意味着您根本不必担心选择电话帐户。请记住,这可能会改变,因为文档另有说明。