从 url 下载文件后刷新图库

Refresh gallery after download file from url

我有imageView,如果用户点击imageView,应用程序会在url设置的地方下载图片。之后,如果文件夹存在,图像将下载到“/sdcard/koen”,然后图像将转到那里,如果不存在,则将创建文件夹。

我可以下载文件,我从应用程序中查看 'fileManager'。我在该文件夹中下载了图片。但是当我查看图库时,我看不到图像。

但是,如果我将图像从该文件夹移动到某个文件夹。然后在图库中显示图像。

到目前为止,这是我的代码:

networkimageview.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            boolean success = (new File("/sdcard/koen")).mkdir(); 
            if (!success)
            {
                Log.w("directory not created", "directory not created");
            }

            try
            {
                progressDialog = new ProgressDialog(Tampil_Produk_Fragment.this);
                progressDialog.setMessage("Download Gambar. . . ");
                progressDialog.show();
                URL url = new URL(foto_produk);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                Bitmap myBitmap = BitmapFactory.decodeStream(input);

                String data1 = String.valueOf(String.format("/sdcard/koen/%d.jpg",System.currentTimeMillis()));

                FileOutputStream stream = new FileOutputStream(data1);

                ByteArrayOutputStream outstream = new ByteArrayOutputStream();
                myBitmap.compress(Bitmap.CompressFormat.JPEG, 85, outstream);
                byte[] byteArray = outstream.toByteArray();

                stream.write(byteArray);
                stream.flush();
                stream.getFD().sync();
                scanFile(data1);
                stream.close();
                if(progressDialog!=null && progressDialog.isShowing())
                    progressDialog.dismiss();
                Toast.makeText(getApplicationContext(), "Downloading Completed", Toast.LENGTH_SHORT).show();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            return true;
        }
    });
 }

问题是,我添加了代码:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File("/sdcard/koen/"))));

但还是不行,如何在下载文件后刷新图库并在图库中显示该图片?

我已经编辑了我的代码,这就是我现在的代码。它会将图像显示到画廊

i have added code... but still no luck

尝试指向实际文件,而不是目录。或者,使用 MediaScannerConnection 及其 scanFile() 方法。

另外,在 FileOutputStream() 上的 close() 之前调用 flush()getFD().sync()

此外,您正在主应用程序线程上执行网络 I/O。您的应用程序将在 Android 4.0+ 设备上崩溃,并且当您冻结 UI 时它会吸收所有其他设备。请将您的网络 I/O 移至后台线程,或使用任意数量的 third-party libraries 可以为您异步下载图像。