您将需要广播接收器和待定意图以获得有关失败短信的通知.

下面的代码片段可以帮助您

//---sends an SMS message to another device---

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

//---when the SMS has been sent---

registerReceiver(new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent arg1) {

switch (getResultCode())

{

case Activity.RESULT_OK:

Toast.makeText(context, "SMS sent",

Toast.LENGTH_SHORT).show();

break;

case SmsManager.RESULT_ERROR_GENERIC_FAILURE:

Toast.makeText(context, "Generic failure",

Toast.LENGTH_SHORT).show();

break;

case SmsManager.RESULT_ERROR_NO_SERVICE:

Toast.makeText(context, "No service",

Toast.LENGTH_SHORT).show();

break;

case SmsManager.RESULT_ERROR_NULL_PDU:

Toast.makeText(context, "Null PDU",

Toast.LENGTH_SHORT).show();

break;

case SmsManager.RESULT_ERROR_RADIO_OFF:

Toast.makeText(context, "Radio off",

Toast.LENGTH_SHORT).show();

break;

}

}

}, new IntentFilter(SENT));

//---when the SMS has been delivered---

registerReceiver(new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent arg1) {

switch (getResultCode())

{

case Activity.RESULT_OK:

Toast.makeText(context, "SMS delivered",

Toast.LENGTH_SHORT).show();

break;

case Activity.RESULT_CANCELED:

Toast.makeText(context, "SMS not delivered",

Toast.LENGTH_SHORT).show();

break;

}

}

}, new IntentFilter(DELIVERED));

SmsManager sms = SmsManager.getDefault();

sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐