在我的应用程序中,我可以拍摄照片并使用以下代码保存:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageCaptureUri = Uri.fromFile(new File(context.getExternalFilesDir(null),
"tmp_image_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageCaptureUri);
intent.putExtra("return-data", true);
我尝试使用以下代码从SD卡中删除该文件:
File f = new File(imageCaptureUri.getPath());
if (f.exists() == true)
{
boolean state = f.delete();
Toast.makeText(context, "" + state, Toast.LENGTH_LONG).show();
}
Toast
的输出为true,但SD卡上的文件未删除。我在Android KitKat上测试了它,但它也应该适用于较旧的Android版本。你有什么想法我不能删除照片吗?
我在清单文件中使用了android.permission.WRITE_EXTERNAL_STORAGE
。
答案 0 :(得分:0)
通过快速搜索,我发现有时偶尔需要拨打System.gc()
。在System.gc()
f.delete()
答案 1 :(得分:0)
KitKat对应用程序如何访问文件进行了一些更改。即使在外部存储器中也是如此。
由于这是一个临时文件,我建议您将其重新定位到您自己的应用空间,例如context.getCacheDir
。这可能会奏效。