mirror of
https://github.com/gedoor/legado.git
synced 2025-01-09 04:17:45 +08:00
优化
This commit is contained in:
parent
c18b170351
commit
2dc6766f43
@ -2,11 +2,9 @@ package io.legado.app.ui.filepicker
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.Permissions
|
||||
import io.legado.app.lib.dialogs.alert
|
||||
|
||||
@Suppress("unused")
|
||||
@ -34,25 +32,21 @@ object FilePicker {
|
||||
val intent = createSelectDirIntent()
|
||||
activity.startActivityForResult(intent, requestCode)
|
||||
}.onFailure {
|
||||
checkPermissions(activity) {
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
val selectText = selectList[index]
|
||||
if (selectText == activity.getString(R.string.app_folder_picker)) {
|
||||
checkPermissions(activity) {
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
} else {
|
||||
otherFun?.invoke(selectText)
|
||||
}
|
||||
@ -84,25 +78,21 @@ object FilePicker {
|
||||
val intent = createSelectDirIntent()
|
||||
fragment.startActivityForResult(intent, requestCode)
|
||||
}.onFailure {
|
||||
checkPermissions(fragment) {
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
val selectText = selectList[index]
|
||||
if (selectText == fragment.getString(R.string.app_folder_picker)) {
|
||||
checkPermissions(fragment) {
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.DIRECTORY
|
||||
)
|
||||
} else {
|
||||
otherFun?.invoke(selectText)
|
||||
}
|
||||
@ -139,27 +129,23 @@ object FilePicker {
|
||||
)
|
||||
activity.startActivityForResult(intent, requestCode)
|
||||
}.onFailure {
|
||||
checkPermissions(activity) {
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
val selectText = selectList[index]
|
||||
if (selectText == activity.getString(R.string.app_file_picker)) {
|
||||
checkPermissions(activity) {
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
activity.supportFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
} else {
|
||||
otherFun?.invoke(selectText)
|
||||
}
|
||||
@ -196,27 +182,23 @@ object FilePicker {
|
||||
)
|
||||
fragment.startActivityForResult(intent, requestCode)
|
||||
}.onFailure {
|
||||
checkPermissions(fragment) {
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
val selectText = selectList[index]
|
||||
if (selectText == fragment.getString(R.string.app_file_picker)) {
|
||||
checkPermissions(fragment) {
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
}
|
||||
FilePickerDialog.show(
|
||||
fragment.childFragmentManager,
|
||||
requestCode,
|
||||
mode = FilePickerDialog.FILE,
|
||||
allowExtensions = allowExtensions
|
||||
)
|
||||
} else {
|
||||
otherFun?.invoke(selectText)
|
||||
}
|
||||
@ -246,18 +228,6 @@ object FilePicker {
|
||||
return intent
|
||||
}
|
||||
|
||||
private fun checkPermissions(fragment: Fragment, success: (() -> Unit)? = null) {
|
||||
fragment.registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
|
||||
success?.invoke()
|
||||
}.launch(Permissions.Group.STORAGE)
|
||||
}
|
||||
|
||||
private fun checkPermissions(activity: AppCompatActivity, success: (() -> Unit)? = null) {
|
||||
activity.registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
|
||||
success?.invoke()
|
||||
}.launch(Permissions.Group.STORAGE)
|
||||
}
|
||||
|
||||
private fun typesOfExtensions(allowExtensions: Array<String>): Array<String> {
|
||||
val types = hashSetOf<String>()
|
||||
if (allowExtensions.isNullOrEmpty()) {
|
||||
|
@ -8,12 +8,14 @@ import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.constant.Permissions
|
||||
import io.legado.app.databinding.DialogFileChooserBinding
|
||||
import io.legado.app.lib.theme.primaryColor
|
||||
import io.legado.app.ui.filepicker.adapter.FileAdapter
|
||||
@ -69,7 +71,19 @@ class FilePickerDialog : DialogFragment(),
|
||||
override var isShowHomeDir: Boolean = false
|
||||
override var isShowUpDir: Boolean = true
|
||||
override var isShowHideDir: Boolean = false
|
||||
|
||||
private val queryPermission =
|
||||
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
|
||||
var hasPermission = true
|
||||
it.forEach { (t, u) ->
|
||||
if (!u) {
|
||||
hasPermission = false
|
||||
toastOnUi(t)
|
||||
}
|
||||
}
|
||||
if (hasPermission) {
|
||||
refreshCurrentDirPath(initPath)
|
||||
}
|
||||
}
|
||||
private var requestCode: Int = 0
|
||||
var title: String? = null
|
||||
private var initPath = FileUtils.getSdCardPath()
|
||||
@ -118,7 +132,7 @@ class FilePickerDialog : DialogFragment(),
|
||||
}
|
||||
initMenu()
|
||||
initContentView()
|
||||
refreshCurrentDirPath(initPath)
|
||||
queryPermission.launch(Permissions.Group.STORAGE)
|
||||
}
|
||||
|
||||
private fun initMenu() {
|
||||
|
Loading…
Reference in New Issue
Block a user