Android阻止在DCIM /公用文件夹上保存照片

时间:2014-03-13 18:36:00

标签: android image path storage

2 个答案:

答案 0 :(得分:0)

我是否理解您想要用相机拍照并将其存储在内存中?然后我有两个建议:

  1. 你有没有尝试过描述的方式 http://developer.android.com/training/camera/photobasics.html 将带有Uri的MediaStore.EXTRA_OUTPUT填充到内部存储器?

  2. 如果这无助于将图像直接保存在内部存储中,为什么不从getExternalStorageDirectory()返回的模拟路径中删除它?据我所知,通过此路径访问文件非常有效,即使它可能只是一个链接。

答案 1 :(得分:0)

很抱歉回答我自己的问题,希望这对其他开发者有用: 我的策略:按照问题中的描述捕获照片,将其保存到内部存储器中(data / data / com.package ...) 之后,使用以下方法从公用文件夹(DCIM / MEDIA / 100MEDIA)中删除它(删除该文件夹中最后拍摄的图片...):

    private void deleteLastPhotoTaken() {

    String[] projection = new String[] {
            MediaStore.Images.ImageColumns._ID,
            MediaStore.Images.ImageColumns.DATA,
            MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
            MediaStore.Images.ImageColumns.DATE_TAKEN,
            MediaStore.Images.ImageColumns.MIME_TYPE };

    final Cursor cursor = getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, 
                            null,null, MediaStore.Images.ImageColumns.DATE_TAKEN + "  
                            DESC");

    if (cursor != null) {
        cursor.moveToFirst();

        int column_index_data =  
                    cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

                     String image_path = cursor.getString(column_index_data);

        File file = new File(image_path);
        if (file.exists()) {
            file.delete();

如其他解决方案中所述:不要关闭光标! Android会为你做到这一点。