Медиа-провайдер Android не получает недавно добавленные изображения - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу получить все изображения на устройстве Android.Поэтому я использовал этот код для получения изображений -

private fun getAllShownImagesPath(activity: Activity): ArrayList<String>
{
    val uri: Uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
    val listOfAllImages = ArrayList<String>()
    var absolutePathOfImage : String

    val projection = arrayOf(MediaStore.MediaColumns.DATA, MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
    val orderBy = MediaStore.Images.Media.DATE_ADDED
    val cursor = activity.contentResolver.query(uri, projection, null, null, orderBy)
    val indexData = cursor!!.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)

    cursor.moveToLast()
    while (cursor.moveToPrevious())
    {
        absolutePathOfImage = cursor.getString(indexData)
        listOfAllImages.add(absolutePathOfImage)
    }
    cursor.close()

    return listOfAllImages
}

Но это не возвращает недавно добавленные изображения, как если бы вы загрузили его несколько часов назад.Это как-то исправлено, когда вы перезагружаете устройство, или изображение, к которому вы хотите получить доступ, похоже на один день.Примечание - вы также можете предоставить решение в Java.

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2018

Принудительно отправить трансляцию, после чего медиа-курсор будет обновлен.вызовите это перед доступом к медиа курсору

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 
...