1

所以我几乎完成了SMS我的应用程序的功能。它需要做的最后一件事是显示Toast将消息发送到的号码。我有以下代码:

全局变量:

private BroadcastReceiver sendBroadcastReceiver;
private BroadcastReceiver deliveryBroadcastReceiver;

String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED"; 

在 void onCreate(Bundle savedInstanceState) 上声明:

sendBroadcastReceiver = new BroadcastReceiver()
        {

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

        deliveryBroadcastReceiver = new BroadcastReceiver()
        {
            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;
                }
            }
        };
    registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));
    registerReceiver(sendBroadcastReceiver , new IntentFilter(SENT));

发送短信功能:

private void sendSMS(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);
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
}

调用联系人(存储在首选项中)进行方法调用:

ArrayList<String> contacts = new ArrayList();

List<String> list = SM.getAllValue();
    for(String string : list){
        contacts.add(string);
        }
    for(int i = 0; i < contacts.size(); i++){
        String numberToSend = contacts.get(i).toString();
        sendSMS(numberToSend, sms);
    }

WhereSM.getAllValue()返回list用户的联系人。

最后 onStop()

@Override
protected void onStop() {
    // TODO Auto-generated method stub
    unregisterReceiver(sendBroadcastReceiver);
    unregisterReceiver(deliveryBroadcastReceiver);
    super.onStop();

}

在向多个号码发送消息时,以下代码SMS Sent一遍又一遍地给我敬酒。我现在如何在 toast 中指定数字SMS Sent to Number1SMS sent to Number2或统称All the SMS's were delivered。请帮忙 :)

4

2 回答 2

1

在发送的广播意图 ( new Intent(SENT)) 中,您可以添加发送它的号码:

Intent intent = new Intent(SENT);
intent.putExtra("number", phoneNumber);
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, intent, 0);

然后在您的接收器中,您可以使用该号码:

public void onReceive(Context arg0, Intent arg1) {
    String phoneNumber = arg1.getStringExtra("number");
    // Use it in the toast
}
于 2013-09-01T18:05:29.490 回答
0

首先在这里添加一个新变量

String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED"; 

给它命名String name = null;

然后在 String numberToSend = contacts.get(i).toString();

添加name = numberToSend;

现在在吐司中添加变量

            Toast.makeText(getBaseContext(), "SMS to " + name + " has been sent.", Toast.LENGTH_SHORT).show();

更新:

首先删除您的每个联系人敬酒

            Toast.makeText(getBaseContext(), "SMS Sent", Toast.LENGTH_SHORT).show();

我更喜欢让它成为 Log.e("fd","Fddf");

然后在循环中添加一个 if 语句。

    for(int i = 0; i < contacts.size(); i++){
if (i = contacts.size(){
                Toast.makeText(getBaseContext(), "SMS Sent to all contacts.", Toast.LENGTH_SHORT).show();

}else {
        String numberToSend = contacts.get(i).toString();
        sendSMS(numberToSend, sms);
}
    }
于 2013-09-01T17:10:22.473 回答