java - 发送短信时出错

标签 java android sms

我的 Android 应用程序正在发送短信并且工作正常。但是,当用户输入错误号码时,发送的短信不会显示错误消息。因此,用户不知道他输入了错误的号码。我该如何解决这个问题?

Activity.java

StringTokenizer st=new StringTokenizer(phoneNo,",");
while (st.hasMoreElements())
{
    String tempMobileNumber = (String)st.nextElement();
    if(tempMobileNumber.length()>0 && sms.trim().length()>0)
    {
        sendSMS(tempMobileNumber, sms);
    }
    else
    {
        Toast.makeText(getBaseContext(),
        "Please enter both phone number and message.",
        Toast.LENGTH_SHORT).show();
    }
}

private void sendSMS(String phoneNumber, String message)
{
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
    new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
    new Intent(DELIVERED), 0);

    //---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS sent",
                    Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Generic failure",
                    Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "No service",
                    Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU",
                    Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(), "Radio off",
                    Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    },new IntentFilter(SENT));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered",
                    Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered",
                    Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter(DELIVERED));

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}

最佳答案

您需要验证用户输入是否是电话号码

例如:手机号码必须为 10 位

String number="2525252212"
Pattern mobileNo= Pattern.compile("\\d{10}");
Matcher matcher = mobileNo.matcher(number);
        if (matcher.matches()) {
            //go on
        } else {
            //Show Dialog 
        }

关于java - 发送短信时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655601/

相关文章:

java - 如何将 google 身份验证 token (在 iOS 中获得)传递到 google-app-engine Web servlet?

android - Sharedpreference byte[] 值在通过 'Force Stop' 或任务管理器杀死应用程序后清除

android - Android 上的 CDMA PDU 解析

java - SecureRandom 应该用作单例还是每次生成随机数时都应该创建一个新对象?

java - 如何在 run 方法之外发送对象?

java - 如何在Android中使用CheckBox设置字符串

安卓开发 : Share animated Gif from Internal Storage

Android 应用程序,SMS/文本到语音(已泄漏 serviceConnection)

javascript - 如何从 android 上的 javascript 访问短信收件箱 (phonegap)

JAVA TLS 1.2 降级到 TLS 1.0 有时会报错