Android - sendPendingIntent - sendBroadcastReciever - getStringExtra имеет то же значение

Я пишу приложение, которое загружает данные JSON (идентификатор, сообщение, номер телефона) с URL и отправляет их через SMS. У меня почти все приложение завершено, но у меня есть одна проблема. Я создал отправляющие и ожидающие доставки намерения, и у меня также есть приемники вещания. Когда отправляющий широковещательный приемник выдает мне сообщение, это сообщение отправлено. Я хочу отправить запрос на URL с идентификатором отправленного сообщения. В отправке в ожидании намерения я ставлю строку Экстра ID. При отправке широковещательного сообщения, метод onRecieve (RESULT.OK) я получаю stringExtra. Для тестирования у меня на URL два сообщения, это значит два разных идентификатора. И когда я получаю stringExtra, есть два одинаковых идентификатора последнего отправленного сообщения. Я занимался исследованиями весь день, но ничего не получалось. Не могли бы вы мне помочь? Извините за английский...

Это мой класс DownloadData для загрузки, анализа и отправки данных.

           if (!result.equals("")) {


                    JSONArray jsonArray;

                    try {
                        jsonArray = new JSONArray(result);

                        for (int i = 0; i < jsonArray.length(); i++) {


                            JSONObject jsonObject = jsonArray.getJSONObject(i);

                            String id = jsonObject.getString("id");
                            String phone = jsonObject.getString("phone");
                            String message = jsonObject.getString("message");


                            Log.d(TAG, "onHandleIntent: ******Parsed JSON data: " + id + " " + message + " " + phone);
                            if (id != null && phone != null && message != null) {

                                //  sendSMS(message, phone, this);

                                Intent info = new Intent(SENT);
                                Log.d(TAG, "onHandleIntent: ID is " + id);
                                info.putExtra("extra", id);

//                                Bundle bundle = new Bundle();
//                                bundle.putString("extra", id);
//                                info.putExtras(bundle);


                                PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, info, 0);
                                // PendingIntent sentPI = PendingIntent.getBroadcast(this,0,new Intent(SENT),0);
                                PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0);
                                SmsManager sms = SmsManager.getDefault();
                                sms.sendTextMessage(phone, null, message, sentPI, deliveredPI);
                                Log.d(TAG, "onHandleIntent: sendTextMessage" + phone + " " + message);

А в MainActivity onCreate есть широковещательные рассылки для отправки и доставки.

sendBroadcastReceiver = new BroadcastReceiver() {

            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                    case Activity.RESULT_OK:

                        String id = arg1.getExtras().getString("extra");


                        Toast.makeText(getBaseContext(), "SMS Sent", Toast.LENGTH_SHORT).show();
                        String url = "URL goes here" + id;
                        Log.d(TAG, "onReceive: URL is " + url + id);

// RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
//                            StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
//                                    new Response.Listener<String>() {
//                                        @Override
//                                        public void onResponse(String response) {
//                                            
//                                            Log.d(TAG, "onResponse: " + response.substring(0, 42));
//
//                                        }
//                                    }, new Response.ErrorListener() {
//                                @Override
//                                public void onErrorResponse(VolleyError error) {
//                                    Log.d(TAG, "onErrorResponse: That didn't work!");
//                                }
//                            });
//
//                            queue.add(stringRequest);


                        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;
                }


            }
        };

        deliveryBroadcastReceiver = new BroadcastReceiver() {
            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;
                }


            }
        };
        registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));
        registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));

Большое спасибо за помощь!:)

0 ответов

Другие вопросы по тегам