Сообщения о проблемах Отправка сообщения и задержки в Android (SmsManager) - PullRequest
0 голосов
/ 04 апреля 2019

Я создаю приложение, которое отправляет сообщения с телефона с отчетом о количестве успешных и неудачных сообщений. Сообщение было создано, но сообщение было отложено, и я не смог получить точный отчет.

String SENT = "SMS_SENT", DELIVERED = "SMS_DELIVERED";

    final PendingIntent sentPI = PendingIntent.getBroadcast(getContext(), 0, new Intent(SENT), 0);

    final PendingIntent deliveredPI = PendingIntent.getBroadcast(getContext(), 0, new Intent(DELIVERED), 0);

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

    // SEND BroadcastReceiver
    BroadcastReceiver sendSMS = new BroadcastReceiver() {
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode()) {
                case Activity.RESULT_OK:
                    BaseActivity.displayToastyInfo("Send",getContext());
                    if (state == 1 && ServicesActivity.SelectedContactsSMS.size() > ServicesActivity.countSMS+1 || numbers.size() > ServicesActivity.countSMS+1) {
                        state = 0;
                        ChangeNumberMessage();
                        if (numbers.size() > 0) {
                            left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                            sent.setText("( " + String.valueOf((ServicesActivity.countSMS+1) - ServicesActivity.ListFailMessage.size()) + " )");
                        } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                            left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                            sent.setText("( " + String.valueOf((ServicesActivity.countSMS+1) - ServicesActivity.ListFailMessage.size()) + " )");
                        }
                        ServicesActivity.countSMS++;
                        Log.d("Count","Count SMS : "+ServicesActivity.countSMS);
                        ChangeNumberMessage();
                        btn_send.performClick();
                    }

                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    if (state == 1 && ServicesActivity.SelectedContactsSMS.size() > ServicesActivity.countSMS+1 || numbers.size() > ServicesActivity.countSMS+1) {
                        state = 0;
                        ChangeNumberMessage();
                        // Set Number To Fail SMS List
                        if (numbers.size() > 0) {
                            ServicesActivity.ListFailMessage.add(numbers.get(ServicesActivity.countSMS));
                            left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");

                        } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                            ServicesActivity.ListFailMessage.add(ServicesActivity.SelectedContactsSMS.get(ServicesActivity.countSMS).getNumber());
                            left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                        }
                        ServicesActivity.countSMS++;
                        Log.d("Count","Count SMS : "+ServicesActivity.countSMS);
                        ChangeNumberMessage();
                        btn_send.performClick();
                    }

                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    if (state == 1 && ServicesActivity.SelectedContactsSMS.size() > ServicesActivity.countSMS+1 || numbers.size() > ServicesActivity.countSMS+1) {
                        state = 0;
                        ChangeNumberMessage();
                        // Set Number To Fail SMS List
                        if (numbers.size() > 0) {
                            ServicesActivity.ListFailMessage.add(numbers.get(ServicesActivity.countSMS));
                            left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");

                        } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                            ServicesActivity.ListFailMessage.add(ServicesActivity.SelectedContactsSMS.get(ServicesActivity.countSMS).getNumber());
                            left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                        }
                        ServicesActivity.countSMS++;
                        Log.d("Count","Count SMS : "+ServicesActivity.countSMS);
                        ChangeNumberMessage();
                        btn_send.performClick();
                    }
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    if (state == 1 && ServicesActivity.SelectedContactsSMS.size() > ServicesActivity.countSMS+1 || numbers.size() > ServicesActivity.countSMS+1) {
                        state = 0;
                        ChangeNumberMessage();
                        // Set Number To Fail SMS List
                        if (numbers.size() > 0) {
                            ServicesActivity.ListFailMessage.add(numbers.get(ServicesActivity.countSMS));
                            left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");

                        } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                            ServicesActivity.ListFailMessage.add(ServicesActivity.SelectedContactsSMS.get(ServicesActivity.countSMS).getNumber());
                            left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                        }
                        ServicesActivity.countSMS++;
                        Log.d("Count","Count SMS : "+ServicesActivity.countSMS);
                        ChangeNumberMessage();
                        btn_send.performClick();
                    }

                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    if (state == 1 && ServicesActivity.SelectedContactsSMS.size() > ServicesActivity.countSMS+1 || numbers.size() > ServicesActivity.countSMS+1) {
                        state = 0;
                        ChangeNumberMessage();
                        // Set Number To Fail SMS List
                        if (numbers.size() > 0) {
                            ServicesActivity.ListFailMessage.add(numbers.get(ServicesActivity.countSMS));
                            left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");

                        } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                            ServicesActivity.ListFailMessage.add(ServicesActivity.SelectedContactsSMS.get(ServicesActivity.countSMS).getNumber());
                            left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                            fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                        }
                        ServicesActivity.countSMS++;
                        Log.d("Count","Count SMS : "+ServicesActivity.countSMS);
                        ChangeNumberMessage();
                        btn_send.performClick();
                    }

                    break;
            }
        }
    };

    // DELIVERY BroadcastReceiver
    BroadcastReceiver deliverSMS = new BroadcastReceiver() {
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode()) {
                case Activity.RESULT_OK:
                    ChangeNumberMessage();
                    if (numbers.size() > 0) {
                        left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                        sent.setText("( " + String.valueOf((ServicesActivity.countSMS+1) - ServicesActivity.ListFailMessage.size()) + " )");
                    } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                        left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                        sent.setText("( " + String.valueOf((ServicesActivity.countSMS+1) - ServicesActivity.ListFailMessage.size()) + " )");
                    }

                    break;
                case Activity.RESULT_CANCELED:
                    ChangeNumberMessage();
                    // Set Number To Fail SMS List
                    if (numbers.size() > 0) {
                        ServicesActivity.ListFailMessage.add(numbers.get(ServicesActivity.countSMS));
                        left.setText("( " + String.valueOf((numbers.size()) - (ServicesActivity.countSMS+1)) + " )");
                        fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                    } else if(ServicesActivity.SelectedContactsSMS.size() > 0) {
                        ServicesActivity.ListFailMessage.add(ServicesActivity.SelectedContactsSMS.get(ServicesActivity.countSMS).getNumber());
                        left.setText("( " + String.valueOf((ServicesActivity.SelectedContactsSMS.size()) - (ServicesActivity.countSMS+1)) + " )");
                        fail.setText("( " + String.valueOf(ServicesActivity.ListFailMessage.size()) + " )");
                    }

                    break;
            }
        }
    };
SmsManager.getDefault().sendTextMessage(phone, null, smsText, sentPI, deliveredPI);
...