所以我几乎完成了我的应用程序的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);
}
SM.getAllValue()
返回用户联系人的list
。
最后onStop()
@Override
protected void onStop() {
// TODO Auto-generated method stub
unregisterReceiver(sendBroadcastReceiver);
unregisterReceiver(deliveryBroadcastReceiver);
super.onStop();
}
在向多个号码发送消息时,以下代码一遍又一遍地给我SMS Sent
吐司。我现在如何在吐司中指定数字SMS Sent to Number1
,SMS sent to Number2
等,或统称为All the SMS's were delivered
。
请帮忙:)
答案 0 :(得分: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
}
答案 1 :(得分:0)
首先在这里添加一个新变量
String SENT = "SMS_SENT";
String DELIVERED = "SMS_DELIVERED";
将其命名为String name = null;
然后在String numberToSend = contacts.get(i).toString();
添加name = numberToSend;
现在在toast中添加变量
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);
}
}