2011-10-28 31 views
1

我有一個問題,沒有那個主要問題,但因爲我實現了sendMultipartTextMessage我的代碼的「短信發送」或任何其他吐司不會出現的祝酒。我不知道如果短信成功發送或不。我該怎麼辦?這裏的代碼:吐司不會出現在短信應用程序

private void sendSMS(String phoneNo, String message, boolean split) 
    {  
     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); 

     SmsManager sms = SmsManager.getDefault(); 
     if (!split) { 
      Log.d("SMSTest", "Sending single message: " + message); 
     } else { 
      Log.d("SMSTest", "Sending '" + message + "' in multiple parts."); 
      ArrayList<String> parts = sms.divideMessage(message); 
      Log.d("SMSTest", parts.size() + " parts:"); 
      for (String string : parts) { 
       Log.d("SMSTest", string); 
      }  
    ArrayList<PendingIntent> sentList = new ArrayList<PendingIntent>(); 
        sentList.add(sentPI); 
        ArrayList<PendingIntent> deliveredList = new ArrayList<PendingIntent>(); 
        deliveredList.add(deliveredPI); 
        sms.sendMultipartTextMessage(phoneNo, null, parts, sentList, 
          deliveredList); 

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

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

把默認:在開關和檢查是否有任何的條件是真還是假。 –

+0

與您正在使用的[example](http://mobiforge.com/developing/story/sms-messaging-android)相比,您是否更改'sentPi'和'deliveredPI'的定義? – Vladimir

+0

剛剛編輯了代碼,併發布了全部短信方法。 – kev

回答

0

你不應該實現一個沒有默認情況下的開關。製作一個並顯示getResultCode()的值,至少可以看到返回的內容。這應該有助於您進一步調查行爲。

樣品:

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; 
    default: 
     Toast.makeText(getBaseContext(), "Default... " + getResultCode(), Toast.LENGTH_SHORT).show(); 
} 
+0

我應該如何做這個默認? – kev