从url下载文件后刷新库

时间:2015-03-21 23:34:31

标签: android eclipse image gallery

我有imageView,如果用户应用程序点击imageView将下载网址设置的图片。之后,如果文件夹存在,图像将被下载到'/ sdcard / koen',那么如果不存在则图像将会到达那里然后文件夹将创建。

我可以下载文件,我从apps'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/"))));

但仍然没有运气,如何在下载文件后刷新图库并在图库中显示该图像?

我已编辑了我的代码,现在是我的代码。它会将图像显示到图库

1 个答案:

答案 0 :(得分:0)

  

我添加了代码......但仍然没有运气

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

另外,请在flush() getFD().sync()之前致电close()FileOutputStream()

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