【发布时间】:2014-09-03 16:00:27
【问题描述】:
在我的应用程序中,我可以使用以下代码拍照并保存:
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 的输出为真,但 SD 卡上的文件未删除。我在 Android KitKat 上对此进行了测试,但它也应该适用于较旧的 android 版本。你知道为什么我不能删除照片吗?
我在清单文件中使用了android.permission.WRITE_EXTERNAL_STORAGE。
【问题讨论】:
-
在代码周围使用 try catch 块,看看是否有任何异常。
-
不抛出异常
-
我发现它可以在 Android 4.2 上运行,所以我猜这是 Android KitKat 的问题。那里的 API 发生了一些变化,但我认为没问题?
-
是的,对于 android 4.4+,我们只能删除包特定的文件。文档说“不得允许应用程序写入辅助外部存储设备,除非在合成权限允许的特定包目录中。”
-
是的,没错,但我将文件存储在
getExternalFilesDir。我必须将其保存在其他位置吗?这不是特定于包的目录吗?
标签: android android-sdcard android-file