android 紧急号码没记录,android – 当呼叫被隐瞒/未知时,来电号码是...

您可以阅读TelephonyRegistry的来源:Link

/** … this class provides a

centralized place that applications can register and be called back

from. */

来电的广播是通过以下方法发送的:

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);

}

因此,如果incomingNumber不为空,您将收到与TelephonyManager.EXTRA_INCOMING_NUMBER相对应的值.

incomingNumber来自DefaultPhoneNotifier#notifyPhoneState(Phone):Link

@Override

public void notifyPhoneState(Phone sender) {

Call ringingCall = sender.getRingingCall();

String incomingNumber = "";

if (ringingCall != null && ringingCall.getEarliestConnection() != null){

// Here

incomingNumber = ringingCall.getEarliestConnection().getAddress();

}

try {

mRegistry.notifyCallState(convertCallState(sender.getState()), incomingNumber);

} catch (RemoteException ex) {

// system process is dead

}

}

ringingCall.getEarliestConnection().getAddress()从扩展com.android.internal.telephony.Connection(GsmConnection,CdmaConnection ..)的类之一调用getAddress()方法.

如果查看GsmConnection的构造函数,可以看到为数字和调用者名称分配了变量.据我所知,作为接收者,你只收到号码 – 如果有的话.因此,如果是空字符串(当阻止/隐藏调用者ID时),您收到的Bundle中将不会出现TelephonyManager.EXTRA_INCOMING_NUMBER键.

您没有提到为什么需要此信息.如果您尝试通过比较字符串值来显示个性化消息,我建议您执行以下操作:

String phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER,

"Personalized message for a Blocked Call");

我不确定这是否是一个充分的测试,但是为了模拟被阻止的来电显示,你可以看一下这个问题:Link.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值