我目前正在处理SmsReceiver服务,该服务检查SMS发送者的地址,如果数字与我的数据库中的数字匹配,我可以处理该消息。
但问题是,getOriginatingAddress()方法给出的电话号码总是带有国家代码,目前为+420,因此getOriginatingAddress()返回例如+420123456789。 (CZ)
解析不是问题,但我不知道的是,国家代码来自何处?它来自TelephonyManager getSimCountryIso()还是来自我所在的当前国家,或者发件人来自哪里?
我可以抓住前两个/三个数字,然后在一些预定义的国家代码地图中查找它们,但我想用手机给出的100%正确信息而不是我“猜测”。
答案 0 :(得分:1)
getOriginatingAddress
从Sms本身获取完整数字(包括国家/地区代码)。
每个短信都包含收件人,发件人和短信正文的信息(以及更多)。
向您发送短信的设备/提供商将其全部号码(e164格式)(包括国家/地区代码)放入Sms数据包并发送给您,您的设备不会对该国家进行猜测代码。