@@ -3,18 +3,20 @@ package com.simplemobiletools.filemanager.pro.activities
33import android.app.SearchManager
44import android.content.Context
55import android.os.Bundle
6+ import android.provider.MediaStore
67import android.view.Menu
78import android.view.MenuItem
89import androidx.appcompat.widget.SearchView
910import androidx.core.view.MenuItemCompat
10- import com.simplemobiletools.commons.extensions.handleHiddenFolderPasswordProtection
11- import com.simplemobiletools.commons.extensions.toast
11+ import com.simplemobiletools.commons.extensions.*
1212import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
13+ import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1314import com.simplemobiletools.filemanager.pro.R
1415import com.simplemobiletools.filemanager.pro.dialogs.ChangeSortingDialog
1516import com.simplemobiletools.filemanager.pro.dialogs.ChangeViewTypeDialog
1617import com.simplemobiletools.filemanager.pro.extensions.config
1718import com.simplemobiletools.filemanager.pro.helpers.*
19+ import java.util.*
1820
1921class MimeTypesActivity : SimpleActivity () {
2022 private var isSearchOpen = false
@@ -40,6 +42,14 @@ class MimeTypesActivity : SimpleActivity() {
4042 }
4143 }
4244 )
45+
46+ ensureBackgroundThread {
47+ getProperFilePaths { paths ->
48+ runOnUiThread {
49+
50+ }
51+ }
52+ }
4353 }
4454
4555 override fun onCreateOptionsMenu (menu : Menu ): Boolean {
@@ -87,6 +97,58 @@ class MimeTypesActivity : SimpleActivity() {
8797 return true
8898 }
8999
100+ private fun getProperFilePaths (callback : (ArrayList <String >) -> Unit ) {
101+ val filePaths = ArrayList <String >()
102+ val uri = MediaStore .Files .getContentUri(" external" )
103+ val projection = arrayOf(
104+ MediaStore .Files .FileColumns .MIME_TYPE ,
105+ MediaStore .Files .FileColumns .DATA
106+ )
107+
108+ try {
109+ queryCursor(uri, projection) { cursor ->
110+ try {
111+ val fullMimetype = cursor.getStringValue(MediaStore .Files .FileColumns .MIME_TYPE )?.lowercase(Locale .getDefault()) ? : return @queryCursor
112+ val path = cursor.getStringValue(MediaStore .Files .FileColumns .DATA )
113+
114+ val mimetype = fullMimetype.substringBefore(" /" )
115+ when (currentMimeType) {
116+ IMAGES -> {
117+ if (mimetype == " image" ) {
118+ filePaths.add(path)
119+ }
120+ }
121+ VIDEOS -> {
122+ if (mimetype == " video" ) {
123+ filePaths.add(path)
124+ }
125+ }
126+ AUDIO -> {
127+ if (mimetype == " audio" || extraAudioMimeTypes.contains(fullMimetype)) {
128+ filePaths.add(path)
129+ }
130+ }
131+ DOCUMENTS -> {
132+ if (mimetype == " text" || extraDocumentMimeTypes.contains(fullMimetype)) {
133+ filePaths.add(path)
134+ }
135+ }
136+ ARCHIVES -> {
137+ if (archiveMimeTypes.contains(fullMimetype)) {
138+ filePaths.add(path)
139+ }
140+ }
141+ }
142+ } catch (e: Exception ) {
143+ }
144+ }
145+ } catch (e: Exception ) {
146+ showErrorToast(e)
147+ }
148+
149+ callback(filePaths)
150+ }
151+
90152 private fun setupSearch (menu : Menu ) {
91153 val searchManager = getSystemService(Context .SEARCH_SERVICE ) as SearchManager
92154 searchMenuItem = menu.findItem(R .id.search)
0 commit comments