@@ -2,6 +2,7 @@ package com.simplemobiletools.filemanager.pro.fragments
22
33import android.annotation.SuppressLint
44import android.app.usage.StorageStatsManager
5+ import android.content.ContentResolver
56import android.content.Context
67import android.content.Intent
78import android.os.Handler
@@ -10,6 +11,7 @@ import android.provider.MediaStore
1011import android.provider.Settings
1112import android.util.AttributeSet
1213import androidx.appcompat.app.AppCompatActivity
14+ import androidx.core.os.bundleOf
1315import com.simplemobiletools.commons.extensions.*
1416import com.simplemobiletools.commons.helpers.LOWER_ALPHA
1517import com.simplemobiletools.commons.helpers.SHORT_ANIMATION_DURATION
@@ -279,22 +281,35 @@ class StorageFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
279281 )
280282
281283 try {
282- context?.queryCursor(uri, projection) { cursor ->
283- try {
284- val name = cursor.getStringValue(MediaStore .Files .FileColumns .DISPLAY_NAME )
285- if (! showHidden && name.startsWith(" ." )) {
286- return @queryCursor
287- }
284+ if (isOreoPlus()) {
285+ val queryArgs = bundleOf(
286+ ContentResolver .QUERY_ARG_SORT_COLUMNS to arrayOf(MediaStore .Files .FileColumns .DATE_MODIFIED ),
287+ ContentResolver .QUERY_ARG_SORT_DIRECTION to ContentResolver .QUERY_SORT_DIRECTION_DESCENDING
288+ )
289+ context?.contentResolver?.query(uri, projection, queryArgs, null )
290+ } else {
291+ val sortOrder = " ${MediaStore .Files .FileColumns .DATE_MODIFIED } DESC"
292+ context?.contentResolver?.query(uri, projection, null , null , sortOrder)
293+ }?.use { cursor ->
294+ if (cursor.moveToFirst()) {
295+ do {
296+ try {
297+ val name = cursor.getStringValue(MediaStore .Files .FileColumns .DISPLAY_NAME )
298+ if (! showHidden && name.startsWith(" ." )) {
299+ continue
300+ }
288301
289- val size = cursor.getLongValue(MediaStore .Files .FileColumns .SIZE )
290- if (size == 0L ) {
291- return @queryCursor
292- }
302+ val size = cursor.getLongValue(MediaStore .Files .FileColumns .SIZE )
303+ if (size == 0L ) {
304+ continue
305+ }
293306
294- val path = cursor.getStringValue(MediaStore .Files .FileColumns .DATA )
295- val lastModified = cursor.getLongValue(MediaStore .Files .FileColumns .DATE_MODIFIED ) * 1000
296- fileDirItems.add(FileDirItem (path, name, false , 0 , size, lastModified))
297- } catch (e: Exception ) {
307+ val path = cursor.getStringValue(MediaStore .Files .FileColumns .DATA )
308+ val lastModified = cursor.getLongValue(MediaStore .Files .FileColumns .DATE_MODIFIED ) * 1000
309+ fileDirItems.add(FileDirItem (path, name, false , 0 , size, lastModified))
310+ } catch (e: Exception ) {
311+ }
312+ } while (cursor.moveToNext())
298313 }
299314 }
300315 } catch (e: Exception ) {
0 commit comments