Мое приложение может открывать и обрабатывать определенные файлы. Таким образом, вы можете нажать на такой файл, например, в файловом менеджере, и моему приложению предложит его открыть. Фильтр намерений в файле манифеста настроен примерно так.Android: удалить файл, связанный с содержанием uri
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="text/plain" />
</intent-filter>
Чтение и обработка файла, как это работает отлично:
Context.getContentResolver().openInputStream(getIntent().getData());
Проблема в том, что я хочу, чтобы удалить файл после его обработки. (Если пользователь проверяет флажок для него). Пользователи, как правило, больше не нуждаются в файле после его открытия в моем приложении.
В настоящее время я могу сделать это только в том случае, если файл предоставлен мне как файл uri (начиная с файла: //). В этом случае этот код работает отлично:
new File(contentUri.getPath()).delete();
Но я не знаю, как удалить файл, если он предусмотрен в качестве URI контента. (Начиная с содержанием: //)
Например, это возвращает нуль, и ничего не делает:
Context.getContentResolver().delete(getIntent().getData(), null, null);
Откуда вы берете 'Uri'? – CommonsWare
Посмотрите на DocumentFile :: deleteFile(). – greenapps
Возможный дубликат [Удаление файлов через ContentResolver в отличие от их удаления через 'file.delete()'] (http://stackoverflow.com/questions/10925196/deleting-files-via-a-contentresolver-as -opposed-to-deleting-them-through-file-del) –