Search code examples
javaandroidjsoup

I don't find any code about getting all images to html web page


I tried so much methods but I don't get success and I'm aware used First(); method, I mean cannot create loop about it, anyway, revelant web page here this: http://www.planecrashinfo.com/recent.htm thanks already my new codes the following i don't know how i sync he said way

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();
        }

I dont know what i write this code beetwen scops Glide.with(***activity_main***)


Solution

    1. You need to add this outside the application tag in your AndroidManifest.xmlto access Internet.

      <uses-permission android:name="android.permission.INTERNET" />

    2. Add Glide and Jsoup libs to your project.

    3. 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" />
      
    4. 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();
          }
      }