2016-05-04 83 views
0

我正在編寫一個在Android中發送短信的程序。點擊發送按鈕後,我希望獲得發送消息的狀態併發送。這部分工作正常。問題是我想讓電話號碼發送到內部廣播併發送到該電話號碼。這是必要的,因爲SMS可以一次發送給許多用戶。我怎樣才能做到這一點?我試圖將no放在Intent中並將其放入廣播接收器中,但它不起作用。下面是示例代碼:收到廣播後無法從Intent獲取數據

public void sendSMS(final String message, final String tele) { 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    SMSStatus sentStatus = new SMSStatus(); 
    SMSDelivery deliveryStatus = new SMSDelivery(); 
    //broadcast these during send and delivery 
    PendingIntent sentPI = PendingIntent.getBroadcast(SMS.this, 0, new Intent(SENT).putExtra("telephone", tele), 0); 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(SMS.this, 0, new Intent(DELIVERED).putExtra("telephone",tele), 0); 

    registerReceiver(sentStatus, new IntentFilter(SENT)); 
    registerReceiver(deliveryStatus, new IntentFilter(DELIVERED)); 

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

與廣播接收機的一個:

class SMSStatus extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      //Toast.makeText(SMS.this, "Sent to " + arg1.getExtras().getString("telephone"), Toast.LENGTH_LONG).show(); 
      String no = arg1.getExtras().getString("telephone"); 
      switch (getResultCode()) { 
       case Activity.RESULT_OK: 
        Toast.makeText(getBaseContext(), "Message sent " + no, Toast.LENGTH_SHORT).show(); 
        break; 
       ... 
      } 
} 

只是爲了信息,第一代碼被稱爲一個循環中通過不同的電話號碼。

+0

是什麼問題,是不是空或敬酒不顯示? – varunkr

+0

@varunkr它顯示,但始終只有第一個電話。沒有。它沒有得到第二個或第三個電話。沒有。 – birraa

+0

然後請張貼循環部分以及 – varunkr

回答

0

更改sendSMS代碼爲:

public void sendSMS(final String message, final String tele) { 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    SMSStatus sentStatus = new SMSStatus(); 
    SMSDelivery deliveryStatus = new SMSDelivery(); 
    //broadcast these during send and delivery 
    PendingIntent sentPI = PendingIntent.getBroadcast(SMS.this, 0, new Intent(SENT).putExtra("telephone", tele), PendingIntent.FLAG_UPDATE_CURRENT); 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(SMS.this, 0, new Intent(DELIVERED).putExtra("telephone",tele), PendingIntent.FLAG_UPDATE_CURRENT); 

    registerReceiver(sentStatus, new IntentFilter(SENT)); 
    registerReceiver(deliveryStatus, new IntentFilter(DELIVERED)); 

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