我正在使用InputStream
和OutputStream
將圖像從res/drawable
保存到Gallery
。它工作正常,並保存圖像。但問題是它不會更新圖庫中的圖像。如果我使用ES File Explorer
檢查文件夾,那麼我可以在那裏看到圖像。我也檢查了ddms
,它也會在write
代碼執行時立即更新映像。
它工作正常,如果我保存服務器映像。如何防止這個問題?我想在Image保存後立即更新Gallery。
我也試過MediaScanner
掃描文件夾,但沒有效果。
我的代碼:保存的圖像無法在Gallery中看到android
Toast.makeText(context, "Downloading Image...\nPlease Wait.",
Toast.LENGTH_LONG).show();
File direct = new File(Environment.getExternalStorageDirectory()
+ "/Images");
if (!direct.exists()) {
direct.mkdirs();
}
DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-HHmmss");
Date date = new Date();
String CurrentDateTime = dateFormat.format(date);
InputStream input = null;
OutputStream output = null;
try {
input = context.getResources().openRawResource(
context.getResources().getIdentifier(
"@drawable/" + picName, "drawable",
context.getPackageName()));
output = new FileOutputStream(direct + "/" + "IMG-"
+ CurrentDateTime + ".jpg");
byte[] buf = new byte[1024];
int len;
while ((len = input.read(buf)) > 0) {
output.write(buf, 0, len);
}
MediaScannerConnection.scanFile(context,
new String[] { direct.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
Toast.makeText(context, "Image Saved.", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.e("Internal Image Save Error->", e.toString());
Toast.makeText(context,
"Couldn't Save Image.\nError:" + e.toString() + "",
Toast.LENGTH_LONG).show();
} finally {
try {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
} catch (IOException ignored) {
Log.e("Internal Image Save Error->", ignored.toString());
Toast.makeText(
context,
"Couldn't Save Image.\nError:" + ignored.toString()
+ "", Toast.LENGTH_LONG).show();
}
}
@ZerO,我的文章不是關於如何保存圖像。這是關於畫廊更新。 – CSAT 2014-09-11 06:56:30
是的。現在讀什麼在重複... – PKlumpp 2014-09-11 07:01:16