2016-05-04 21 views
0

AndroidでSMSメッセージを送信するプログラムを作成しています。送信ボタンがクリックされた後、私は送信済みのようなメッセージのステータスを取得したいと思います。この部分はうまく動作します。問題は、メッセージが送られてきて、放送中に配信される電話番号を取得したいということです。一度に多くのユーザーにSMSを送信できるため、これが必要です。どうやってやるの?私はIntentにnoを入れて、それを放送受信機の中に入れようとしましたが、動作しません。ここでのサンプルコードは、次のとおりです。ブロードキャスト受信後にインテントからデータを取得できませんでした

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

そして、放送受信機の1:

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それは常に最初のtelだけを表示します。いいえ。それは2番目または3番目の電話を取得しません。いいえ。 – birraa

+0

ループ部分も投稿してください。 – varunkr

答えて

0
はにあなたの sendSMSコードを変更し

、問題であることがnullであるかトーストが表示されていないものを
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); 
}