#java #android #jsoup
#java #Android #jsoup
Вопрос:
Я перепробовал так много методов, но я не добился успеха, и я знаю, что использовал First();
метод, я имею в виду, что не могу создать цикл об этом, во всяком случае, веб-страница revelant вот это: http://www.planecrashinfo.com/recent.htm спасибо уже моим новым кодам, следующим я не знаю, как я синхронизирую, сказал он.
private class FetchImageLogo extends AsyncTask<Void, Void, Void> {
Bitmap bitmap;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("LOGO");
progressDialog.setMessage("Logo Çekiliyor...");
progressDialog.setIndeterminate(false);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try{
getAllImages(yemekURL);
for (int i = 0; i < imagesURLs.size(); i ) {
Glide.with(activity_main)
.load(imagesURLs.get(i))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(resimler);
}
/*
Document doc = Jsoup.connect(yemekURL).get();
Element link = doc.select("img").first();
String absHref = link.attr("abs:src"); // "http://jsoup.org/"
InputStream input = new java.net.URL(absHref).openStream();
bitmap = BitmapFactory.decodeStream(input);*/
}catch (Exception e){
e.printStackTrace();
}
return null;
}
ArrayList<String> getAllImages(String url) {
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
// ToDo "Can not connect the URL, Make sure that the URL starts with [http://...]"
return null;
}
Elements media = doc.select("[src]");
Element link = doc.select("img").first();
for (Element src : media) {
if (src.tagName().equals("img")) {
// Add images url to the list
imagesURLs.add(link.attr("abs:src"));
}
}
return imagesURLs;
}
@Override
protected void onPostExecute(Void aVoid) {
logo_layout = (LinearLayout)findViewById(R.id.logo_layout);
ImageView img_logo = (ImageView)findViewById(R.id.img_logo);
logo_layout.setVisibility(View.VISIBLE);
img_logo.setImageBitmap(bitmap);
progressDialog.dismiss();
}
Я не знаю, что я пишу в этом коде, когда использую scops Glide.with(***activity_main***)
Комментарии:
1. пожалуйста, отправьте вывод Logcat и способ вызова задачи FetchImageLogo
Ответ №1:
-
Вам нужно добавить это вне тега приложения в свой
AndroidManifest.xml
, чтобы получить доступ к Интернету.<uses-permission android:name="android.permission.INTERNET" />
-
Добавьте
Glide
иJsoup
библиотеки в свой проект. -
activity_main.xml
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="First Image" android:gravity="center" android:textSize="18sp"/> <ImageView android:id="@ id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" />
-
MainActivity.java
private ProgressDialog progressDialog; private ImageView imageView; private ArrayList<String> imagesURLs = new ArrayList<>(); private String firstImgURL = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_download_images); imageView = findViewById(R.id.imageView); new FetchImageLogo().execute(); } private class FetchImageLogo extends AsyncTask<Void, Void, Void> { //Bitmap bitmap; @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("LOGO"); progressDialog.setMessage("Logo Çekiliyor..."); progressDialog.setIndeterminate(false); progressDialog.show(); } @Override protected Void doInBackground(Void... params) { String yemekURL = "http://www.planecrashinfo.com/recent.htm"; try { imagesURLs = getAllImages(yemekURL); // Can not get images URLs if (imagesURLs == null) return null; } catch (Exception e) { e.printStackTrace(); } // Display the first image... // you have to put your code in runOnUiThread() to reach UI components runOnUiThread(new Runnable() { @Override public void run() { Glide.with(MainActivity.this) .load(firstImgURL) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(imageView); } }); final StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < imagesURLs.size(); i ) { // ToDo: you need to create [RecyclerView] to display all images /*runOnUiThread(new Runnable() { @Override public void run() { Glide.with(MainActivity.this) .load(imagesURLs.get(i)) .diskCacheStrategy(DiskCacheStrategy.NONE) .skipMemoryCache(true) .into(imageView); } });*/ stringBuilder.append("img").append(String.valueOf(i 1)).append(": ") .append(imagesURLs.get(i)).append("n"); } // See -> Logcat Log.d("Debug_Images", stringBuilder.toString()); return null; } ArrayList<String> getAllImages(String url) { Document doc; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { // ToDo "Can not connect the URL, Make sure that the URL starts with [http://...]" return null; } // Get the first image URL Element link = doc.select("img").first(); firstImgURL = link.attr("abs:src"); // Get all images URLs Elements media = doc.select("[src]"); for (Element img : media) { if (img.tagName().equals("img")) { // Add images url to the list imagesURLs.add(img.attr("abs:src")); } } return imagesURLs; } @Override protected void onPostExecute(Void aVoid) { /*logo_layout = (LinearLayout) findViewById(R.id.logo_layout); ImageView img_logo = (ImageView) findViewById(R.id.img_logo); logo_layout.setVisibility(View.VISIBLE); img_logo.setImageBitmap(bitmap);*/ progressDialog.dismiss(); } }
Комментарии:
1. большое вам спасибо, братан, оцените это, я могу получить все URL-адреса изображений, но на этом этапе остается небольшая проблема с ошибкой.DiskCacheStrategy(DiskCacheStrategy.NONE)
2. Возможно, вы используете эмулятор или устройство, у вас нет доступа к хранилищу используемого вами устройства.
Ответ №2:
Вы можете попробовать этот код
ArrayList<String> getAllImages(String url) {
ArrayList<String> imagesURLs = new ArrayList<>();
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
// ToDo "Can not connect the URL, Make sure that the URL starts with [http://...]"
return null;
}
Elements media = doc.select("[src]");
for (Element src : media) {
if (src.tagName().equals("img")) {
// Add images url to the list
imagesURLs.add(image.attr("abs:src"));
}
}
return imagesURLs;
}
Затем вы можете использовать Glide
library для загрузки, обналичивания и отображения изображений, используя их URL-адреса:
for (int i = 0; i < imagesURLs.size(); i ) {
Glide.with(activity)
.load(imagesURLs.get(i))
.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)
.into(imageView);
}
Комментарии:
1. прежде всего, большое вам спасибо, но я не решил проблему, честно говоря, я не разбираюсь в Android причина в том, почему я обновил свои коды, можете ли вы проверить это еще раз