2014-03-26 133 views
0

我的Android應用程序正在發送短信,而且工作正常。但是,當用戶輸入錯誤的號碼時,SMS將被髮送而沒有錯誤信息。因此,用戶不知道他輸入了錯誤的號碼。我該如何解決這個問題?發送短信時出錯

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

回答

2

你需要驗證用戶輸入是否是電話號碼或不

例如:手機號碼必須是10位數

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

加上一個驗證建議以及模式和匹配器。 –