Загрузка с URL не работает

Я пытаюсь загрузить изображение (JPG) из URL, используя следующий метод asynctask.

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }

Я выполняю этот метод в OnCreate, как это

new DownloadImageTask((ImageView) findViewById(R.id.imageView1)).execute(final_url);

Но я не вижу никакого изображения, и когда я отлаживал его, я нашел значение mIcon11 быть нулевым. Что я делаю неправильно

PS: final_url идет так

www.website.com/somelink/IMG 005_153.JPG

2 ответа

Ваш финалhttp://www.website.com/somelink/IMG%20005_153.JPG не возвращает ничего. Проверь это..

Попробуйте закодировать его перед использованием.

String uri = Uri.parse("http://...")
            .buildUpon()
            .appendQueryParameter("key", "val")
            .build().toString();

или попробуйте следовать

String uri = URLEncoder.encode(finalurl, "utf-8");

private class ImageLoadTask extends AsyncTask<String, Void, Bitmap> {
        private Bitmap bitmap;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            pb1.setVisibility(View.VISIBLE);
            super.onPreExecute();
        }

        @Override
        protected Bitmap doInBackground(String... params) {

            // TODO Auto-generated method stub
            try {
                URL url;
                url = new URL(params[0]);
                HttpURLConnection connection = (HttpURLConnection) url
                        .openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                bitmap = BitmapFactory.decodeStream(input);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            im.setImageBitmap(result);
            pb1.setVisibility(View.INVISIBLE);
        }
    }

и называть это как

new ImageLoadTask().execute(STRING URL);
Другие вопросы по тегам