这是我用于在Android应用中发送短信的代码:
private void SendSMS(final String message,final String phoneNumber)
{
SmsManager sms = SmsManager.getDefault();
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0);
registerReceiver(new BroadcastReceiver(){
@Override
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;
default:
break;
}
}
}, new IntentFilter(Constants.SENT));
registerReceiver(new BroadcastReceiver(){
@Override
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;
}
}
}, new IntentFilter(DELIVERED));
try{
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}catch(Exception e){
e.printStackTrace();
Toast.makeText(getApplicationContext(), EXCEPTION, Toast.LENGTH_LONG).show();
}
}
一切正常,我可以发送短信,我的两个广播接收器在短信发送和传递时都会触发。在我的国家,每一个传递消息的确认都需要付费,即使在我的设备上我可以免费发送很多消息,但我的余额会减少。 我可能错过了一些设置,需要设置以避免传递消息确认,或者如果实际上是问题,我需要删除“已传递”的pendingIntent? 你能给我更多信息吗? 谢谢