Отправка данных изображения в android studio на URL-адрес сервера, не работающий на Android 4.1.2

#android #http-post

#Android #http-post

Вопрос:

Я делаю снимок экрана в своем приложении для Android, используя этот код:

        Long tsLong = System.currentTimeMillis()/1000;
                final String ts = tsLong.toString();
               
                String mPath =Environment.getExternalStorageDirectory().getAbsolutePath()   "/Download/ScreenShot/"   ts   ".jpg";
                // create bitmap screen capture
                View v1 = main;
                v1.setDrawingCacheEnabled(true);
                final Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
                v1.setDrawingCacheEnabled(false);

                File imageFile = new File(mPath);

                FileOutputStream outputStream = new FileOutputStream(imageFile);
                int quality = 100;
                bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
                outputStream.flush();
                outputStream.close();
 

Затем я отправляю этот снимок экрана на сервер, используя следующее:

  String url = "http://website.com/";
            StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.e("takeScreenshot", "onResponse: " response);
                }
            }, new Response.ErrorListener() { //Create an error listener to handle errors appropriately.
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("takeScreenshot", "error: " error);
                    //This code is executed if there is an error.
                }
            }) {
                protected Map<String, String> getParams() {
                    Map<String, String> MyData = new HashMap<String, String>();
                    MyData.put("image_tag", ts);
                    MyData.put("image_data", getStringImage(bitmap));
                    return MyData;
                }
            };
            RequestQueue requestQueue = Volley.newRequestQueue(SecondActivity.this);
            RetryPolicy mRetryPolicy = new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
            MyStringRequest.setRetryPolicy(mRetryPolicy);
            requestQueue.add(MyStringRequest);
 

Этот код отлично работает на любом Android версии 5.0 , но не на 4.1.2, который я использую, по какой-то причине этот код делает снимок экрана и пытается отправить запрос post, но не делает этого, и он не вводит onResponse или onErrorResponse

Я добавил это RetryPolicy mRetryPolicy = new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); MyStringRequest.setRetryPolicy(mRetryPolicy); , чтобы попытаться решить мою проблему, но это ничего не дало

Комментарии:

1. getStringImage(bitmap)) Неясно, что вы отправляете. И какую ошибку вы получаете? Или какой оператор выполняется последним? Или где он зависает? И имеет ли значение, что вы опубликовали код, который сжимает bimap в файл?

2. getStringImage(bitmap)) отправка данных изображения requestQueue.add(MyStringRequest); выполняется последней строкой. и если я удалю данные изображения из запроса post URL, он пройдет, но не с данными изображения, поэтому я добавил код изображения

3. getStringImage(bitmap)) send the image Нет, это ничего не отправит. И вы не сказали и не показали, что делает это утверждение.

4. по сути, в этом заявлении MyData.put("image_data", getStringImage(bitmap)); отправка данных изображения под именем image_data в другом word getStringImage(bitmap) собирает данные изображения и .put() помещает данные в post-запрос в качестве дополнительных данных. пример: здесь данные отправляются следующим образом: link.././image_tag=nameamp;image_data=dqfqrqeqwfr3232r2t2gf2...

5. Вы все еще не сказали, что делает getStringImage. И что он возвращает. Вы не рассказали и не показали, как вы преобразуете растровое изображение в строку. Или поместите растровое изображение в строку.