Код, для которого я получаю, и ошибка «Протокол не найден» для отображения изображения в режиме просмотра изображений в 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)
и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение.
и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение.
и изображение не отображается на экране, очень ценю вашу помощь. Спасибо. Только изображение появляется, а не изображение.