Skip to content

Commit ffc8380

Browse files
committed
adding the actual file fetcher at the mimetype activity
1 parent 05f99b4 commit ffc8380

File tree

1 file changed

+64
-2
lines changed

1 file changed

+64
-2
lines changed

app/src/main/kotlin/com/simplemobiletools/filemanager/pro/activities/MimeTypesActivity.kt

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ package com.simplemobiletools.filemanager.pro.activities
33
import android.app.SearchManager
44
import android.content.Context
55
import android.os.Bundle
6+
import android.provider.MediaStore
67
import android.view.Menu
78
import android.view.MenuItem
89
import androidx.appcompat.widget.SearchView
910
import androidx.core.view.MenuItemCompat
10-
import com.simplemobiletools.commons.extensions.handleHiddenFolderPasswordProtection
11-
import com.simplemobiletools.commons.extensions.toast
11+
import com.simplemobiletools.commons.extensions.*
1212
import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID
13+
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1314
import com.simplemobiletools.filemanager.pro.R
1415
import com.simplemobiletools.filemanager.pro.dialogs.ChangeSortingDialog
1516
import com.simplemobiletools.filemanager.pro.dialogs.ChangeViewTypeDialog
1617
import com.simplemobiletools.filemanager.pro.extensions.config
1718
import com.simplemobiletools.filemanager.pro.helpers.*
19+
import java.util.*
1820

1921
class 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

Comments
 (0)