Android媒体提供程序未获取最近添加的图像

时间:2018-11-10 10:40:40

标签: java android android-studio kotlin media

我想获取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 :(得分:0)

强制发送广播,然后媒体光标将被更新。在访问媒体光标之前调用此

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