Android: удаление ярлыка загруженного файла из папки «Загрузки» - PullRequest
0 голосов
/ 08 января 2020

В моем коде я использовал для загрузки apk, использовать его, а затем удалить его. Но после удаления Apk удаляется только из внутреннего хранилища (внутреннее хранилище / android / data // files / download), но все еще находится в папке My Files / Downloads. Как программно удалить этот ярлык / вид из папки «Мои файлы / Загрузки» или как предотвратить сохранение его в эту папку?

Код загрузки:

final String destination = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) + FORWARD_SLASH + TMP_APK_NAME;
final Uri uri = Uri.parse("file://" + destination);

//set downloadmanager
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));

//set destination
request.setDestinationUri(uri);

// get download service and enqueue file
final DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

Код удаления:

//Delete update file if exists
final File file = new File(destination);
if (file.exists()) {
    file.delete();
}

Ответы [ 3 ]

1 голос
/ 15 января 2020

В соответствии с документацией , enqueue вернет длинное значение, которое представляет идентификатор этого файла в папке загрузки. Сохраните это значение в переменной

long fileId = manager.enqueue(request);

, затем используйте это значение, чтобы удалить его из downdloads

manager.remove(fileId);
0 голосов
/ 08 января 2020
final String destination = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) + FORWARD_SLASH + TMP_APK_NAME;
final Uri uri = Uri.parse("file://" + destination);

File file = new File(uri.getPath());
if (file.exists()) { // if your file exit 
  file.delete();
}

убедитесь, что у вас есть разрешение на запись во внешнее хранилище

0 голосов
/ 08 января 2020

Вы можете попробовать и таким способом - надеюсь, это сработает. Как DownloadManager может загрузить файл в этом uri, так что вы можете удалить с этим uri.

// Delete update file if exists
File file = new File(uri.getPath());
if (file.exists()) {
    file.delete();
}
...