2011-10-28 7 views
1

私は問題を抱えていますが、大きな問題ではありませんが、私のコードでsendMultipartTextMessageを実装したので、 "SMS Sent"というトーストや他のトーストは表示されません。 SMSが正常に送信されたかどうかはわからない。私は何をすべきか?コードは次のとおりです。トーストはSMSアプリケーションに表示されません

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

コードを編集し、smsメソッド全体がポストされました。 – kev

答えて

0

デフォルトの大文字小文字を使用しないでスイッチを実装しないでください。 1つを作成し、少なくとも返されるものよりも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

関連する問題