Изображение не отображается и протокол ошибок не найден в Android - PullRequest
0 голосов
/ 14 апреля 2019

Код, для которого я получаю, и ошибка «Протокол не найден» для отображения изображения в режиме просмотра изображений в Android. См. Ошибку, которую я получаю.

package com.android.guessthecelebrity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ImageView;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Random;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class MainActivity extends AppCompatActivity {
        ArrayList<String> celebUrls = new ArrayList<String>();
        ArrayList<String> celebNames = new ArrayList<String>();
        int choosenCeleb = 0;
        ImageView imageview;

        public class  downloadImage extends AsyncTask<String, Void, Bitmap> {

            @Override
            protected Bitmap doInBackground(String... urls) {
                URL url;
                try {

                     url = new URL(urls[0]);

                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.connect();

                    InputStream inputStream = connection.getInputStream();
                    Bitmap myBitMap = BitmapFactory.decodeStream(inputStream);
                    return myBitMap;

                } catch (Exception e) {

                    e.printStackTrace();
                    return null;
                }
            }
        }

        public class DownloadTask extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... urls) {
                String result = "";
                URL url;
                HttpURLConnection urlConnection = null;
                try {

                    url = new URL(urls[0]);
                    urlConnection = (HttpURLConnection) url.openConnection();

                    InputStream in = urlConnection.getInputStream();

                    InputStreamReader reader = new InputStreamReader(in);
                    int data = reader.read();
                    while (data != -1) {

                        char current = (char) data;
                        result += current;
                        data = reader.read();

                    }
                    return result;
                } catch (Exception e) {

                    e.printStackTrace();
                    return null;
                }
            }
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            imageview = findViewById(R.id.imageView);

            DownloadTask task = new DownloadTask();
            String result = null;
            try {
                result = task.execute("http://www.posh24.se/kandisar").get();

                String[] splitResult = result.split("<div class=\"listedArticles\">");

                Pattern p = Pattern.compile("img src=(.*?)/>");
                Matcher m = p.matcher(splitResult[0]);

                while (m.find()) {
                    celebUrls.add(m.group(1));
                }

                p = Pattern.compile("\"(.*?)\"");
                m = p.matcher(splitResult[0]);

                while (m.find()) {
                    celebNames.add(m.group(1));
                }

                Random rand = new Random();
                choosenCeleb = rand.nextInt(celebUrls.size());
                downloadImage imageTask = new downloadImage();
                Bitmap celebImage = imageTask.execute(celebUrls.get(choosenCeleb)).get();
                imageview.setImageBitmap(celebImage);


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

            }
        }
    }

I am getting this error

2019-04-14 01:01:05.243 15624-15779/com.android.guessthecelebrity W/System.err: java.net.MalformedURLException: no protocol: "http://cdn.posh24.se/images/:profile/06843450e961e1302d12b6951558d684d" alt="Kit Harington"
2019-04-14 01:01:05.244 15624-15779/com.android.guessthecelebrity W/System.err:     at java.net.URL.<init>(URL.java:590)
2019-04-14 01:01:05.244 15624-15779/com.android.guessthecelebrity W/System.err:     at java.net.URL.<init>(URL.java:487)
2019-04-14 01:01:05.244 15624-15779/com.android.guessthecelebrity W/System.err:     at java.net.URL.<init>(URL.java:436)
2019-04-14 01:01:05.245 15624-15779/com.android.guessthecelebrity W/System.err:     at com.android.guessthecelebrity.MainActivity$downloadImage.doInBackground(MainActivity.java:35)
2019-04-14 01:01:05.245 15624-15779/com.android.guessthecelebrity W/System.err:     at com.android.guessthecelebrity.MainActivity$downloadImage.doInBackground(MainActivity.java:27)
2019-04-14 01:01:05.246 15624-15779/com.android.guessthecelebrity W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:333)
2019-04-14 01:01:05.246 15624-15779/com.android.guessthecelebrity W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2019-04-14 01:01:05.246 15624-15779/com.android.guessthecelebrity W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
2019-04-14 01:01:05.247 15624-15779/com.android.guessthecelebrity W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
2019-04-14 01:01:05.247 15624-15779/com.android.guessthecelebrity W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
2019-04-14 01:01:05.247 15624-15779/com.android.guessthecelebrity W/System.err:     at java.lang.Thread.run(Thread.java:764)

и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение. и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение. и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение.

1 Ответ

0 голосов
/ 14 апреля 2019

Вы должны использовать Picasso для обработки любой работы с изображением

Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(yoir_image_view);

Здесь - ссылка на библиотеку

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