我有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/"))));
但仍然没有运气,如何在下载文件后刷新图库并在图库中显示该图像?
我已编辑了我的代码,现在是我的代码。它会将图像显示到图库
答案 0 :(得分:0)
我添加了代码......但仍然没有运气
尝试指向实际文件,而不是指向目录。或者,使用MediaScannerConnection
及其scanFile()
方法。
另外,请在flush()
getFD().sync()
之前致电close()
和FileOutputStream()
。
此外,您正在主应用程序线程上进行网络I / O.您的应用程序将在Android 4.0+设备上崩溃,并且当您冻结UI时,它会吸引所有其他设备。请将您的网络I / O移动到后台线程,或使用可以异步下载图像的任意数量的third-party libraries。