我是初学的android程序员。我创建了一个隐藏图像的项目。但是,我的项目有问题。就是它:
我使用一种方法将照片从文件夹A
移动到文件夹.B
(以下是我将其隐藏在图片库中的方法)。我确信文件夹A
中的图片已被删除并移至文件夹.B
。但是,当我打开图库应用程序时,我仍然看到此图片显示在文件夹A
。
这是方法复制图片到文件夹.B
:
public static String copyFile(String path) {
//TO DO: create folder .B
File pathFrom = new File(path);
File pathTo = new File(Environment.getExternalStorageDirectory() + "/.B");
File file = new File(pathTo, fileToName);
while (file.exists()) {
fileToName = String.valueOf(System.currentTimeMillis());
file = new File(pathTo, fileToName);
}
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(pathFrom);
out = new FileOutputStream(file);
byte[] data = new byte[in.available()];
in.read(data);
out.write(data);
in.close();
out.close();
return file.getPath();
} catch (FileNotFoundException e) {
Log.e(TAG, e.getMessage());
return "error:" + e.getMessage();
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return "error:" + e.getMessage();
}
}
将照片复制到文件夹.B
后,我删除了A
文件夹中的这张图片:
new File(path).delete();
那么对于所有图片库的通知是否有任何建议知道此图片已移至另一个文件夹或其他URI?
**更新:对我工作正常的建议是: 在4.4之前,你可以这样称呼:
sendBroadcast(新Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory())));
4.4之后,试试这个:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file)));
//文件是新图像的路径
THank FireSun和everyonce
答案 0 :(得分:1)
为什么不使用
pathFrom.delete();
答案 1 :(得分:1)
更改imgae路径后,您应该通知画廊更新,因此您应该发送广播进行更新。
在4.4之前,你可以这样称呼:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory())));
4.4之后,试试这个:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file)));
//the file is new image's path