我的应用程序使用SMSManager将短信发送到保存在联系人列表中的号码
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);
我收到了用户的反馈,联系人列表中的某些号码无法从应用中收到短信。似乎这个问题与每个国家的格式电话号码有关。
来自美国的用户反馈此格式的电话号码无法接收短信。 编号:(555)444-6666
我想我应该将电话号码转换为"标准"发送短信之前的电话号码。
我应该使用什么标准格式的电话号码?
如果我将(555)444-6666 中的所有特殊字符删除为 5554446666 ,这种方式是申请所有国家/地区的好方法吗?
答案 0 :(得分:-1)
发送消息不需要标准。
您可以复制并粘贴此代码以检索联系电话号码。
private String readcontacts(Context context, String cName) {
ContentResolver cr = context.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur
.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME))
.toLowerCase();
if (name.equals(cName.toLowerCase())) {
if (Integer
.parseInt(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
// get the phone number
Cursor pCur = cr
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[]{id},
null);
while (pCur.moveToNext()) {
String phone = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
return phone;
}
pCur.close();
}
}
}
}
return "Nothing found for " + cName + "!";
}
您只需指定联系人姓名" cName "在这种方法中和android系统将以正确的格式返回电话号码。
然后发送短信。
public void sendSMS(String message) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(readcontacts(context, "john"), null, message, null, null);
}