【问题标题】:What is standard format phone number to send SMS?发送短信的标准格式电话号码是什么?
【发布时间】:2016-08-14 15:52:26
【问题描述】:

我的应用使用 SMSManager 向保存在联系人列表中的号码发送短信

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);

我收到用户的反馈,他们的联系人列表中的某些号码无法从应用接收短信。似乎这个问题与每个国家/地区的格式电话号码有关。

一位来自美国的用户反馈此格式的电话号码无法接收短信。 号码:(555)444-6666

我认为我应该在发送 SMS 之前将电话号码转换为“标准”电话号码。

我应该使用什么标准格式的电话号码?

如果我从(555)444-66665554446666中删除所有数字的特殊字符,这种方式是适用于所有国家/地区的好方法吗?

【问题讨论】:

  • 这有帮助吗?我面临同样的问题。

标签: android sms


【解决方案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 + "!";
}

您只需在此方法中指定联系人姓名“cNameAndroid系统会以正确的格式返回电话号码。

然后发送短信。

public void sendSMS(String message) {

    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(readcontacts(context, "john"), null, message, null, null);

}

【讨论】:

  • 问题不在于他检索联系人的方式,我面临同样的问题一半的联系人没有收到消息。
猜你喜欢
  • 2023-04-02
  • 2013-12-04
  • 2015-01-04
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
相关资源
最近更新 更多