Android смс всегда отправляется один и тот же контакт - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь отправить смс нескольким контактам, используя asynctask.Но когда я нажимаю кнопку отправки, смс отправляется только на один номер, который является вершиной моего выбранного списка контактов.А количество отправленных смс равно размеру выбранного списка контактов.Я написал свой код отправки смс ниже.Как я могу решить эту проблему?

  @Override
  protected final String doInBackground(List<kisiler>... lists) {
      int progress=0;
      final List<contacts> k=lists[0];
      dialog.setMax(k.size());

      while (progress<dialog.getMax()){

            try{

                final String m=k.get(k.size()-1).getName();


                SmsManager smsManager = SmsManager.getDefault();

                publishProgress(String.valueOf(k.size()-1),String.valueOf(k.size()),m,String.valueOf(dialog.getMax()));
                PendingIntent sendPI = PendingIntent.getBroadcast(getActivity(), 0, new Intent(), 0);


                getActivity().registerReceiver(new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context context, Intent intent) {
                        switch (getResultCode()) {
                            case Activity.RESULT_OK:
                          Toast.makeText(getActivity(),getString(R.string.sent_to_sms)+contact.getName(),Toast.LENGTH_LONG).show();

                                break;

                            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                Toast.makeText(getActivity(), R.string.failure+kisi2.getIsim(),Toast.LENGTH_LONG).show();

                                break;
                            case SmsManager.RESULT_ERROR_NO_SERVICE:

                                Toast.makeText(getActivity(), R.string.no_service, Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_NULL_PDU:
                                break;
                            case SmsManager.RESULT_ERROR_RADIO_OFF:
                                break;
                        }
                    }
                }, new IntentFilter(SENT+m));

                smsManager.sendTextMessage(contact.getNumber(), null, location_information(location), sendPI, null);


            }catch (Exception e){
                e.printStackTrace();
            }

          progress++;

      }

      return "Done";
  }

1 Ответ

0 голосов
/ 11 октября 2018

Вы всегда ссылаетесь на одну и ту же переменную contact.Вам нужно изменить его с помощью списка k и номера progress следующим образом:

k.get(progress) // your current contact

Измените его на что-то вроде этого:

  @Override
  protected final String doInBackground(List<kisiler>... lists) {
      int progress=0;
      final List<contacts> k=lists[0];
      dialog.setMax(k.size());

  while (progress<dialog.getMax()){

        try{

            final String m=k.get(k.size()-1).getName();


            SmsManager smsManager = SmsManager.getDefault();

            publishProgress(String.valueOf(k.size()-1),String.valueOf(k.size()),m,String.valueOf(dialog.getMax()));
            PendingIntent sendPI = PendingIntent.getBroadcast(getActivity(), 0, new Intent(), 0);


            getActivity().registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    switch (getResultCode()) {
                        case Activity.RESULT_OK:
                      Toast.makeText(getActivity(),getString(R.string.sent_to_sms)+k.get(progress),Toast.LENGTH_LONG).show();

                            break;

                        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                            Toast.makeText(getActivity(), R.string.failure+kisi2.getIsim(),Toast.LENGTH_LONG).show();

                            break;
                        case SmsManager.RESULT_ERROR_NO_SERVICE:

                            Toast.makeText(getActivity(), R.string.no_service, Toast.LENGTH_LONG).show();
                            break;
                        case SmsManager.RESULT_ERROR_NULL_PDU:
                            break;
                        case SmsManager.RESULT_ERROR_RADIO_OFF:
                            break;
                    }
                }
            }, new IntentFilter(SENT+m));

            smsManager.sendTextMessage(k.get(progress).getNumber(), null, location_information(location), sendPI, null);


        }catch (Exception e){
            e.printStackTrace();
        }

      progress++;

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...