4

我正在尝试在我的自定义电话应用程序中实现自定义 ConnectionService。根据文档,我需要在电话设置菜单中选择我注册的电话帐户作为默认值。但是,当我注册 PhoneAccount 以使用本机电话堆栈时,PhoneAccount 似乎没有出现供使用。

让我向您展示我到目前为止所做的工作。此代码注册了一个 PhoneAccount,它“......不允许从内置电话堆栈管理或拨打电话”

    PhoneAccount.Builder builder = new PhoneAccount.Builder(phoneAccountHandle, "CustomAccount");
    builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER);
    PhoneAccount phoneAccount = builder.build();
    telecomManager.registerPhoneAccount(phoneAccount);

这使得可选择的 PhoneAccount 显示在设置 > 通话 > 通话帐户下。使用此帐户拨打电话确实绑定到我的 ConnectionService 实现,但无法在任何地方实际拨打电话。

我真正想要设置的功能是PhoneAccount.CAPABILITY_CONNECTION_MANAGER,它确实使用了内置堆栈。但是这样做确实会从菜单中完全删除该帐户,并使其无法选择为默认帐户。

关于我在这里可能做错的任何想法?

PS:我上一个问题的延续(为电信注册新的PhoneAccount)

更新:这是我的 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 解决的电话帐户确实会自动绑定,尽管文档说它不会。这意味着您根本不必担心选择电话帐户。请记住,这可能会改变,因为文档另有说明。

4

0 回答 0