DownloadManager изображения не отображаются в галерее

#android

#Android

Вопрос:

Я не могу понять это ни за что на свете. У меня есть следующий код в качестве прослушивателя загрузки для моего webview. Когда изображение загружается с помощью этого, оно отображается в приложении Files, но не отображается в приложении Google Photos.

Обесценивается request.allowScanningByMediaScanner() , и когда я меняю каталог на DIRECTORY_PICTURES, я вообще не вижу изображения в файлах.

Все мои изображения представлены в формате JPEG, и интересным примечанием является то, что все изображения, отображаемые в Google Фото, имеют раздел details documents/msf:int по сравнению с моими загруженными изображениями, которые являются просто documents/ msf. Кроме того, когда я переименовываю свои фотографии, загруженные менеджером загрузок, они отображаются в Google Photos.

 webview.setDownloadListener { url, userAgent, contentDisposition, mimeType, contentLength ->
    // Getting data
    val filename = URLUtil.guessFileName(url, contentDisposition, mimeType)
    val cookies = CookieManager.getInstance().getCookie(url)

    // Setting up Download Request Manager
    val request = DownloadManager.Request(Uri.parse(url))
    request
        .setMimeType(mimeType)
        .addRequestHeader("cookie", cookies)
        .addRequestHeader("User-Agent", userAgent)
        .setTitle(filename)
        .setDescription("Taken from RPI")
        .setDestinationInExternalPublicDir(DIRECTORY_DOWNLOADS, filename)

    // Setting up Main Download Manager
    val manager = getSystemService(DOWNLOAD_SERVICE) as DownloadManager
    manager.enqueue(request)

    generateSnack(view, filename)  // Ignore this, just makes a snackbar with the filename
  

Как я могу загрузить свои изображения с помощью моего менеджера загрузок для отображения в галерее?

Комментарии:

1. запрос.allowScanningByMediaScanner(); ?

2. Вы всегда можете вызвать mediascanner самостоятельно.

3. К сожалению, этот метод устарел. Как бы я сам его вызвал?

4. Странно, что в нем отсутствует msf:int идентификатор документа…

5. Какое значение имеет то, что он устарел, когда он работает? Это не грех использовать! Помогает ли перезагрузка устройства?

Ответ №1:

Хорошо, я понял это.

По какой-то причине изображения с определенными символами просто отказываются отображаться, Google Photos но они все равно будут отображаться Files .

Моим конкретным примером было то, что имена моих файлов были следующими: «день-месяц-год #int». Например, одно из них было «14-11-20 # 2», потому что это была вторая фотография, сделанная в тот день.

Как только я удалил символ хэштега, все это сработало и автоматически появилось в Google Фото. Кроме того, «msf: int» по-прежнему не отображается даже при этом, но меня это не касается.