Удаление изображения галереи после съемки камеры - PullRequest
64 голосов
/ 17 июня 2011

Я знаю, что об этом спрашивали по-разному, но я все еще не могу удалить изображение галереи из папки по умолчанию.Я правильно сохраняю файл на SD-карту и могу нормально удалить этот файл, но файл галереи по умолчанию, который отображается в папке «Камера», не удаляется.

Я хочу, чтобы изображение было удалено послеактивность возвращается, так как файл уже хранится на SD-карте в /Coupon2.

Есть предложения?

public void startCamera() {
    Log.d("ANDRO_CAMERA", "Starting camera on the phone...");

    mManufacturerText = (EditText) findViewById(R.id.manufacturer);
    String ManufacturerText = mManufacturerText.getText().toString();
    String currentDateTimeString = new Date().toString();

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File filedir = new File(Environment.getExternalStorageDirectory()+"/Coupon2");
    filedir.mkdirs();

    File file = new File(Environment.getExternalStorageDirectory()+"/Coupon2", ManufacturerText+"-test.png");
    outputFileUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

    startActivityForResult(intent, CAMERA_PIC_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == -1) {  
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.putExtra("crop", "true");
        intent.putExtra("scale", "true");

        intent.putExtra("return-data", false);
        intent.setDataAndType(outputFileUri, "image/*");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
        startActivityForResult(intent, CAMERA_CROP_REQUEST);
    }else { 
        SetImage();
        saveState();
    }
}

Ответы [ 12 ]

0 голосов
/ 15 марта 2017

Поработав с этим в течение некоторого времени, я укусила пулю и написала свою собственную деятельность камеры caputere .Я убежден, что это гораздо более портативно и безопаснее, чем решения MediaStore.ACTION_IMAGE_CAPTURE.Изображение будет храниться там, где вы его храните, и нигде больше, и вам не грозит случайное удаление какого-либо несвязанного файла.Кроме того, возможно адаптировать фактическую функцию камеры точно к требованиям.

Из соображений портативности я использовал класс Camera, а не камеру2.

Стоит отметить, что все параметры камеры должны быть установлены, особенно размер изображения, режим фокусировки и режим вспышки, при запуске камеры все они могут находиться в непредвиденном состоянии.

Записьэто как ответ, а не как комментарий, потому что, на мой взгляд, это правильный ответ, в результате которого минимальные усилия .

0 голосов
/ 28 июня 2011

Лучше всего, вероятно, напрямую обрабатывать класс Camera, а затем сохранять JPEG или RAW, возвращенные в обратном вызове, где вы хотите.

В качестве альтернативы, вы можете попробовать удалить удаленное изображение с помощью _id изконтент-провайдер для медиа после его добавления.Просто найдите его по запросу и удалите его через ContentResolver.delete, хотя и не уверены в его реализации.

...