How to download file/image from url to your android app

后端 未结 4 1161
星月不相逢
星月不相逢 2020-12-20 02:47

I need my android app to make request to url to download an image from this url so I have built this class to help me, BUT it didn\'t work ???

public class M         


        
4条回答
  •  北荒
    北荒 (楼主)
    2020-12-20 03:08

    new DownloadImageFromUrlTask().execute(imagePath);
    
    //add glide dependency in app gradle file
    compile 'com.github.bumptech.glide:glide:3.7.0'
    
    public class DownloadImageFromUrlTask extends AsyncTask {
            String downloadPath = "";
    
            @Override
            protected Bitmap doInBackground(String... args) {
                try {
                    downloadPath = args[0];
                    return BitmapFactory.decodeStream((InputStream) new URL(downloadPath).getContent());
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return null;
            }
    
            @Override
            protected void onPostExecute(Bitmap bitmap) {
                if (bitmap != null) {
                    String photoFileName = downloadPath.substring(downloadPath.lastIndexOf('/') + 1);
                    String root_Path =  Environment.getExternalStorageDirectory().toString();
    
                    String saveImagePath = root_Path + "/" + photoFileName;
    
                    saveBitmapToJPEGFile(MainActivity.this, bitmap, new File(saveImagePath), 900);
                    loadImageWithGlide(MainActivity.this, myImageView, saveImagePath);
                } else {
                    myImageView.setImageResource(R.drawable.default_photo);
                }
            }
        }
    
        public static Boolean saveBitmapToJPEGFile(Context ctx, Bitmap theTempBitmap, File theTargetFile, int i) {
            Boolean result = true;
            if (theTempBitmap != null) {
                FileOutputStream out = null;
                try {
                    out = new FileOutputStream(theTargetFile);
                    theTempBitmap.compress(Bitmap.CompressFormat.JPEG, CommonUtils.JPEG_COMPRESION_RATIO_DEFAULT, out);    //kdfsJpegCompressionRatio
                } catch (FileNotFoundException e) {
                    result = false;
                    e.printStackTrace();
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            } else {
                result = false;
            }
            return result;
        }
    
        public static void loadImageWithGlide(Context theCtx, ImageView theImageView, String theUrl) {
            Glide.with(theCtx)
                    .load(theUrl)
                    .diskCacheStrategy(DiskCacheStrategy.NONE)
                    .skipMemoryCache(true)
                    .into(theImageView);
    
        }
    

提交回复
热议问题