这是我的代码..
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 arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
ContentValues values = new ContentValues();
//for (int i = 0; i < MobNumber.size() - 1; i++) {
// values.put("address", MobNumber.get(i).toString());// txtPhoneNo.getText().toString());
// values.put("body", MessageText.getText().toString());
//}
getContentResolver().insert(
Uri.parse("content://sms/sent"), values);
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;
}
}
}, new IntentFilter(SENT));
// ---when the SMS has been delivered---
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));
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
我不是一次发送这么多短信。我不是快速发送它。此代码处于活动状态,可扩展AppCompactActivity。我已在此网站上阅读了有关此错误的所有链接。我甚至无法发送一个短信。我的移动帐户余额足以发送短信。我的网络服务也很好,我可以发送和接收短信。只得到一个错误&#34;通用失败&#34;。如果有任何想法,请帮助我。
答案 0 :(得分:2)
我认为你需要检查信息中心号码。如果未设置或正确,则可能发生此故障。您将在SMS设置选项中找到此号码。
答案 1 :(得分:1)
如果您的消息太长,请在代码中使用处理程序
new Handler().postDelayed(new Runnable() {
public void run() {
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
}, 1000*40);
或使用此link
答案 2 :(得分:1)
如果您使用的是双卡手机,请检查首选的SIM卡是否未设置为“每次询问”。
您需要设置默认SIM卡。如果您正在使用
SmsManager sms = SmsManager.getDefault();
答案 3 :(得分:0)
如果您的手机是双SIM卡,则您需要在手机设置中为Google短信设置首选SIM卡(将其设置为Google),并且默认SIM卡必须包含一些余额...另一种设置首选默认SIM卡的技巧在您的手机中-只需将一个SIM卡关闭一段时间,以便另一个SIM卡将自动成为您首选的短信默认SIM卡:) sendTextMessage()中的电话号码参数可以两种方式使用,即使用国家/地区代码(例如+919783 ######)或不使用代码(例如9783 ######)。两者都可以工作
答案 4 :(得分:0)
您的消息可能太长。在这种情况下,应使用divideMessage
和sendMultipartTextMessage
,如下所示:
smsManager.sendMultipartTextMessage(phoneNumber, null, divideMessage(message), null, null);