用相机拍照,然后删除

时间:2018-03-12 13:31:17

标签: android android-camera delete-file

我在这里看到很多帖子说这已经解决了,但是看着日期,我认为最近我见过的是2015年。我已经尝试过我发现但无法解决的问题它

主要是,我尝试过的是从uri中找到文件(以不同的方式),但它说它不存在。

我也发现了这个:

getContentResolver().delete(data.getData, null, null)
在我从相机拍摄照片之后,在p内部调用onActivityResult(int requestCode,int resultCode,Intent data)方法。在这种情况下,我得到了一个N​​PE,因为数据为空。

修改

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_open_camera) {
        ContentValues values = new ContentValues();
        imageName = "Example" + System.currentTimeMillis();
        values.put(MediaStore.Images.Media.TITLE, imageName);
        values.put(MediaStore.Images.Media.DESCRPITION, "Camera_" + System.currentTimeMillis());
        imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        takePictureIntent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, imageName);
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageuri);
        if (takePictureIntent.resolveActivity(this.getPackageManager()) != null) {
            startActivityForResult(takePictureIntent, 1);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1 && resultCode == RESULT.OK) {
        Bitmap image = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
        // I do some stuff with this image here and want to delete it afterwards
        File fDelete = new File(imageUri.getPath());
        getApplicationContext().deleteFile(fDelete.getName());
    }
}

1 个答案:

答案 0 :(得分:0)

如果您要删除相机应用程序拍摄的照片,请不要使用媒体库中的内容uri开始。

只需构建文件系统路径并使用文件提供程序,并将获取的uri放在EXTRA_OUTPUT中。

完成后,使用文件系统路径删除文件。