如何获取来电的 sim id (默认 dailer)

问题描述

当应用程序是认拨号器时,我需要一种方法获取来电(双卡)的 sim id(1 或 2)。

应用正在实施 InCallService。

解决方法

看起来您可以运行 call.getDetails().getAccountHandle().getId(),它将返回一个字符串,该字符串是该 PhoneAccountHandle 的标识符。

请注意,PhoneAccountHandle 也是从 getSimCallManager

返回的

这是 PhoneAccountHandle 文档中的注释:

唯一区分这个特定的字符串 PhoneAccountHandle 来自连接支持的所有其他人 创建它的服务。

连接服务必须选择稳定的标识符 用户与其服务的关系的生命周期,跨越许多 安卓设备。例如,一组好的标识符可能是 用户注册帐户时使用的电子邮件地址 具有特定的服务。取决于服务选择的方式 操作,一组错误的标识符可能是越来越多的 在每个电话上本地生成的整数(0、1、2、...)和 可能与其他手机上或数据后生成的值发生冲突 擦除给定的手机。重要提示:非唯一标识符可能会导致 非确定性呼叫日志备份/恢复行为。

您还可以运行 getPhoneAccount(phoneAccountHandlerFromAbove) 来获取 address() 即帐户的电话号码。

如果你想和系统中事物的顺序进行比较,你可以用getCallCapablePhoneAccounts检索所有PhoneAccountHandle的列表

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...