2014-09-03 1 views
1

В моем приложении я могу сделать снимок и сохранить его с этим кодом:Удал.файла на карте Android SD

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

используйте блок catch try вокруг вашего кода и посмотрите, есть ли исключения. –

+0

Исключение не выбрано – Cilenco

+0

Я узнал, что он работает на Android 4.2, поэтому я думаю, что это проблема с Android KitKat. Там API немного изменился, но я думаю, что все в порядке? – Cilenco

ответ

0

С некоторыми быстрыми поисками я вижу, что иногда требуется позвонить System.gc(). Позвоните по номеру System.gc() после вашего f.delete()

+1

Спасибо за это, но я протестировал его, и файл все еще там. – Cilenco

+0

Я узнал, что он работает на Android 4.2 (без System.gc), поэтому я думаю, что это проблема с Android KitKat. У тебя есть другие идеи? – Cilenco

0

В комплект KitKat есть некоторые изменения о том, как приложения могут или нет доступа к файлам. Даже во внешнем хранилище.

Поскольку это временный файл, я предлагаю вам переместить его в собственное пространство приложения, например context.getCacheDir. Это, вероятно, сработает.