再次发送短信错误一般失败和 agian

Sending sms error Generic failure again and agian

这是我的代码..

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 的 activity 下。我已阅读此站点上有关此错误的所有链接。我什至不能发送一条短信。我的手机帐户余额足以发送短信。我的网络服务也很好,我可以收发短信。刚收到一个错误 "Generic failure"。如果有人有任何想法,请帮助我。

如果您的消息太长,请在您的代码中使用处理程序

new Handler().postDelayed(new Runnable() {
                public void run() {

                 SmsManager sms = SmsManager.getDefault();
                 sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
                }
            }, 1000*40);

或使用此 link

我觉得你需要查一下消息中心号码。如果未设置或不正确,则可能会发生此故障。您将在 SMS 设置选项中找到此号码。

如果您使用的是双卡 Phone,请检查短信首选卡是否未设置为 "Ask every time"。

您需要设置默认 SIM 卡。如果您正在使用

SmsManager 短信 = SmsManager.getDefault();

如果您的 phone 是双 sim 卡,那么首先您需要在 phone 设置中为短信设置首选 sim 卡(google 并且该默认 sim 卡必须包含一些余额...在 phone 中设置首选默认 sim 卡的另一个小技巧是 - 只需关闭一个 sim 卡一段时间,这样另一个 sim 卡就会自动成为您首选的默认 sim 卡用于短信:) sendTextMessage() 中的 phone 数字参数可以两种方式使用,即使用国家代码如 +919783###### 或不使用代码如 9783######。两者都可以

您的消息可能太长了。在那种情况下,你应该使用 divideMessagesendMultipartTextMessage,像这样:

smsManager.sendMultipartTextMessage(phoneNumber, null, divideMessage(message), null, null);