2012-08-07 65 views
0

在這裏,我創建了一個textview,並且我在該textview中存儲了多個聯繫人,然後通過意圖將該textview值傳遞給另一個activity.Now我想將Sms發送到多個聯繫人存儲在收到的textview ..而我已經通過使用下面的代碼來做到這一點。但問題是,我只能發送到存儲在該文本視圖中的第一個數字。所以請建議一些替代代碼發送它到所有存儲的聯繫人。將短信發送到存儲在文本視圖中的多個聯繫人

這裏是我的代碼..

Bundle bundle=intent2.getExtras(); 
final String getudisp=bundle.getString("InvisibleNum"); 

String number =getudisp; 
sendSMS(number, message); 

private void sendSMS(String number, String message) { 

    Intent sentIntent = new Intent(INTENT_ACTION_SENT); 
    PendingIntent pendingSentIntent = PendingIntent.getBroadcast(this, 
      REQUEST_CODE_ACTION_SENT, sentIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

    Intent deliveryIntent = new Intent(INTENT_ACTION_DELIVERY); 
    PendingIntent pendingDeliveryIntent = PendingIntent.getBroadcast(this, 
      REQUEST_CODE_ACTION_DELIVERY, deliveryIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

    SmsManager smsManager = SmsManager.getDefault(); 

    // Second parameter is the service center number. Use null if you want 
    // to use the default number 
    smsManager.sendTextMessage(number, null, message, pendingSentIntent, 
      pendingDeliveryIntent); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(smsSentDeliveredReceiver); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    IntentFilter filter = new IntentFilter(INTENT_ACTION_SENT); 
    filter.addAction(INTENT_ACTION_DELIVERY); 

    registerReceiver(smsSentDeliveredReceiver, filter); 
} 

private void initializeReceivers() { 
    smsSentDeliveredReceiver = new BroadcastReceiver() { 

     public void onReceive1(Context context, Intent intent) { 
      processBroadcasts(intent); 
     } 

     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      // TODO Auto-generated method stub 

     } 
    }; 
} 

private void processBroadcasts(Intent intent) { 
    String action = intent.getAction(); 
    Log.i(TAG, "Received: " + action); 

    if (action.equals(INTENT_ACTION_SENT)) { 
     Bundle bundle = intent.getExtras(); 
     // Need to check for error messages 
     Log.i(TAG, "Message: Sent"); 
     Toast.makeText(this, "Message sent", Toast.LENGTH_LONG).show(); 
    } else if (action.equals(INTENT_ACTION_DELIVERY)) { 
     Bundle bundle = intent.getExtras(); 
     Set<String> keys = bundle.keySet(); 
     // Need to check for error messages 
     Log.i(TAG, "Message: Delivered"); 
     Toast.makeText(this, "Message delivered", Toast.LENGTH_LONG).show(); 
    } 
} 
+1

@ user158095看看這篇文章發送短信http://mobiforge.com/developing/story/sms-messaging-android – Akshay 2012-08-07 06:00:47

+0

'String number = getudisp; sendSMS(number,message);' 我看你只發送消息給一個號碼。你不應該使用for循環來發送消息給每個pnone數字嗎? – 2012-08-07 06:18:55

+0

雅我可以使用..但我可以把它作爲一個整體長度只知道,如果我使用字符串數值在for循環.. – user1580945 2012-08-07 06:37:33

回答

2

創建一個類MultipleSMS這種方式。


private void MultipleSMS(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: 
        ContentValues values = new ContentValues(); 
        for (int i = 0; i < MobNumber.size() - 1; i++) { 
         values.put("address", MobNumber.get(i).toString()); 
         // txtPhoneNo.getText().toString()); 
         values.put("body", MessageText.getText().toString()); 
        } 
        getContentResolver().insert(
          Uri.parse("content://sms/sent"), values); 
        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); 
    } 

現在叫MultipleSMS這樣:


這裏MobNumber是包含PHONENUMBERS

 for (int i = 0; i < MobNumber.size(); i++) 
     { 
       String message = MessageText.getText().toString(); 
       String tempMobileNumber = MobNumber.get(i).toString(); 
       MultipleSMS(tempMobileNumber, message); 
     } 
0123數組
+0

謝謝你的解決方案..但我想清除我的疑惑。你是否建議我將textview值放在數組中.. – user1580945 2012-08-07 06:33:13

+0

沒有我親愛的朋友,我已經把這些東西放在了這裏。你可以使用任何可以同時調用MultipleSMS函數的邏輯。這樣做。 – 2012-08-07 06:35:55

+0

你在textview中獲得哪種類型的值?只有電話號碼? – 2012-08-07 06:37:08

相關問題