Android 当呼叫被拒绝/未知时,传入呼叫号码字符串值是多少?
我有一个收听来电的Android 当呼叫被拒绝/未知时,传入呼叫号码字符串值是多少?,android,Android,我有一个收听来电的广播接收器。当来电时,我通过执行以下操作获得号码: Bundle extras = intent.getExtras(); ... String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 当来电来自保留的号码时会发生什么情况,并且为电话号码字符串分配了什么值? 我猜它是null,“未知”,“保留”,或者类似的,但不幸的是,我没有找到如何模拟保留号码的来电,所以我不能确定。您可
广播接收器。当来电时,我通过执行以下操作获得号码:
Bundle extras = intent.getExtras();
...
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
当来电来自保留的号码时会发生什么情况,并且为电话号码字符串分配了什么值?
我猜它是null
,“未知”
,“保留”
,或者类似的,但不幸的是,我没有找到如何模拟保留号码的来电,所以我不能确定。您可以通读电话注册的源代码
:
/**。。。这个类提供了一个
应用程序可以注册和回调的集中位置
从*/
传入呼叫的广播通过以下方法发送:
private void broadcastCallStateChanged(int state, String incomingNumber) {
....
....
Intent intent = new Intent(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
intent.putExtra(PhoneConstants.STATE_KEY,
DefaultPhoneNotifier.convertCallState(state).toString());
// If `incomingNumber` is empty, the key
// `TelephonyManager.EXTRA_INCOMING_NUMBER` will not be present
// in the attached Bundle
if (!TextUtils.isEmpty(incomingNumber)) {
intent.putExtra(TelephonyManager.EXTRA_INCOMING_NUMBER, incomingNumber);
}
mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
android.Manifest.permission.READ_PHONE_STATE);
}
因此,您将收到一个对应于TelephonyManager的值。额外的\u传入\u编号
iffincomingNumber
不为空
incomingNumber
来自DefaultPhoneNotifier#notifyPhoneState(电话)
:
ringingCall.getEarliestConnection().getAddress()
从扩展com.android.internal.telephony.Connection
(GsmConnection,CdmaConnection..)的类之一调用getAddress()
方法
如果查看GsmConnection
的构造函数,可以看到为number和caller name分配了变量。据我所知,作为一个接收者,你只会收到号码——如果有号码的话。因此,如果出现空字符串(当来电显示被阻止/保留时),您收到的捆绑包中将不存在键TelephonyManager.EXTRA_INCOMING_NUMBER
你没有提到你为什么需要这些信息。如果您试图通过比较字符串值来显示个性化消息,我建议您执行以下操作:
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER,
"Personalized message for a Blocked Call");
我不确定这是否是一个足够的测试,但要模拟阻塞的来电显示,您可以看看这个问题:。阅读@Bob。恐怕那没用。您的意思是这将返回null。但是,如果它返回未知号码或保留号码(比如你接到保留号码的电话时在手机屏幕上看到的文字),那么会怎样呢?至少在美国,大多数手机都需要有一种方法来阻止来电者的ID信息。为什么不从一个被屏蔽的电话中给自己打个电话,看看会发生什么?
String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER,
"Personalized message for a Blocked Call");