improve root content deleting
This commit is contained in:
parent
5cb9b6cc4f
commit
32ca1fdf70
|
@ -24,6 +24,7 @@ import com.simplemobiletools.filemanager.adapters.ItemsAdapter
|
|||
import com.simplemobiletools.filemanager.dialogs.CreateNewItemDialog
|
||||
import com.simplemobiletools.filemanager.extensions.config
|
||||
import com.simplemobiletools.filemanager.helpers.RootHelpers
|
||||
import com.stericson.RootTools.RootTools
|
||||
import kotlinx.android.synthetic.main.items_fragment.*
|
||||
import kotlinx.android.synthetic.main.items_fragment.view.*
|
||||
import java.io.File
|
||||
|
@ -159,9 +160,8 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener {
|
|||
}
|
||||
|
||||
private fun getItems(path: String, callback: (items: ArrayList<FileDirItem>) -> Unit) {
|
||||
val config = context.config
|
||||
Thread({
|
||||
if (!config.enableRootAccess || path.startsWith(config.internalStoragePath) || (context.hasExternalSDCard() && path.startsWith(config.sdCardPath))) {
|
||||
if (!context.config.enableRootAccess || !isPathOnRoot(path)) {
|
||||
getRegularItemsOf(path, callback)
|
||||
} else {
|
||||
getRootItemsOf(path, callback)
|
||||
|
@ -169,6 +169,9 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener {
|
|||
}).start()
|
||||
}
|
||||
|
||||
private fun isPathOnRoot(path: String) =
|
||||
!(path.startsWith(context.config.internalStoragePath) || (context.hasExternalSDCard() && path.startsWith(context.config.sdCardPath)))
|
||||
|
||||
private fun getRegularItemsOf(path: String, callback: (items: ArrayList<FileDirItem>) -> Unit) {
|
||||
val items = ArrayList<FileDirItem>()
|
||||
val files = File(path).listFiles()
|
||||
|
@ -262,10 +265,16 @@ class ItemsFragment : Fragment(), ItemsAdapter.ItemOperationsListener {
|
|||
|
||||
override fun deleteFiles(files: ArrayList<File>) {
|
||||
val hasFolder = files.any { it.isDirectory }
|
||||
(activity as SimpleActivity).deleteFiles(files, hasFolder) {
|
||||
if (!it) {
|
||||
activity.runOnUiThread {
|
||||
activity.toast(R.string.unknown_error_occurred)
|
||||
if (isPathOnRoot(files.firstOrNull()?.absolutePath ?: context.config.internalStoragePath)) {
|
||||
files.forEach {
|
||||
RootTools.deleteFileOrDirectory(it.path, false)
|
||||
}
|
||||
} else {
|
||||
(activity as SimpleActivity).deleteFiles(files, hasFolder) {
|
||||
if (!it) {
|
||||
activity.runOnUiThread {
|
||||
activity.toast(R.string.unknown_error_occurred)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue