1

Я в настоящее время работает Зефир, и у меня есть приложение, настроить для загрузки файлов в папке загрузки телефона, используя следующий путь:Обновление Android «Загрузки» папку без использования DownloadManager

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 

и AsyncTask. Все работает нормально, я могу получить доступ к загруженным файлам.

Хотя проблема заключается в том, что файлы доступны только на телефоне с помощью браузера файлов, а не через папку по умолчанию Downloads через приложения для Android. Я понимаю, что вы можете сделать это автоматически, используя Android DownloadManager, но я хотел сохранить текущую реализацию AsyncTask без использования DownloadManager.

Мой вопрос: есть ли способ, который я могу просто «обновить» или «обновить» то, что находится в папке Downloads, чтобы они отображались с помощью приложения «Загрузки для Android»?

Я также попытался использовать медиа-сканер Intent (обновить галерею), но, по моему мнению, это не работает для Marshmellow.

activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file))); 

ответ

3

есть способ, которым я могу просто «обновить» или «обновление», что находится в папке Downloads, чтобы они отображаются с помощью приложения Android Загрузки?

скачивает приложение показывает только то, что в своей собственной ContentProvider, который, в свою очередь, приводится в движение, что было загружено через DownloadManager. Он не отображает содержимое какого-либо конкретного каталога на устройстве и что ContentProvider не документирован или не поддерживается для независимого доступа.

Я также попытался использовать медиа-сканер Intent (обновить галерею), но из моего понимания это не работает для Marshmellow.

Это, или с помощью MediaScannerConnection и scanFile(), позволит приложениям, которые запрашивают в MediaStore, чтобы увидеть файл. Сюда входит демон MTP; MTP - это то, как настольная ОС просматривает содержимое внешнего хранилища устройства Android. Ни одно из них напрямую не влияет на приложение «Загрузки».

2

Это не возможно без класса DownloadManager. Я использую следующие в AsyncTask

DownloadManager downloadManager = (DownloadManager)mainActivity.getSystemService(mainActivity.DOWNLOAD_SERVICE); 
downloadManager.addCompletedDownload(file.getName(), file.getName(), true, "application/json", file.getAbsolutePath(),file.length(),true); 

Это сделает файл появится в приложении Downloads на 6.0, даже если файл был создан на месте.