我正在開發一個Android應用程序。用戶可以在點擊按鈕後拍攝照片。這張相片將用下面的方法被保存到內部包存儲(數據/數據/包/ ...):Android防止在DCIM /公共文件夾上保存照片
private String saveToInternalSorage(Bitmap bitmapImage){
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getDir("TEST", Context.MODE_PRIVATE);
File pod = new File(directory, object.getTitle() + "" +
object.getName() + "" + object.getAge() + ".jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(pod);
bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return pod.getAbsolutePath();
}
另外it's可以刪除從該目錄畫面。這像一個魅力。在模擬器和固定電話上測試。但照片也保存到公用文件夾DCIM。我正在用HTC ONE mini進行測試(沒有SD卡?)。以下是顯示拍攝和獲取照片方法的代碼。
public void takePhoto() {
cameraintent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(cameraintent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap bmp = (Bitmap) extras.get("data");
setPath(saveToInternalSorage(bmp));
我想防止在公用文件夾中存儲照片。我的方法刪除DCIM文件夾中的最新文件失敗,因爲getExternalStorageDirectory()給我一個模擬路徑(如emulated/sdcard/...)在HTC One迷你。而這絕對不是正確的道路。所以我怎麼能確定照片將只存儲到內部的包裝結構,而不是(沒有SD卡/ SD卡)在公用文件夾中。而當我必須刪除公共文件夾中的照片如何做到我得到正確的路徑(爲/在不同的設備上)?
我發現沒有解決方案來防止在公共文件夾「從頭」存儲。
在此先感謝!
編輯
下面的方法應該能夠刪除從DCIM /公用文件夾的照片。
private void deleteLatestFromDCIM() {
File f = new File(Environment.getExternalStorageDirectory() + "");
File [] files = f.listFiles();
Arrays.sort(files, new Comparator<Object>()
{
public int compare(Object o1, Object o2) {
if (((File)o1).lastModified() > ((File)o2).lastModified()) {
return -1;
} else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
return 1;
} else {
return 0;
}
...
if(files[0].exists())
files[0].delete();
問題是DCIM /公共文件夾中的照片獲取通用名稱。請參見下面的圖片:
那麼,如何刪除其名字我不「知道」的圖像?在內存中存儲照片效果很好!我不會讓他們進入公共文件夾。通過getExternalStorageDirectory()方法,我可以得到如上所述的仿真路徑。這真的是DCIM /公共文件夾的路徑嗎?
檢查http://stackoverflow.com/questions/11878336/delete-copy-of-an-image-in-sdcard – zgc7009
getExternalStorageDirectory(),在您的鏈接中提到,並沒有給我正確的路徑,如上所述以上。 – DehMotth
Gotcha。你是否試圖通過仿真來看它是否有效。我知道這聽起來很奇怪,但如果我打開我的文件管理器,它會模擬一切,但如果我從文件管理器中刪除它,它會從我的內存中刪除。可能是類似的情況,不太確定。對不起,沒有真正閱讀我發佈的整個鏈接,只是看到它是沿着你的線條,並有一個解決方案。 – zgc7009