parent
30ddfe4952
commit
82b7e6feb4
@ -0,0 +1,183 @@ |
|||||||
|
package io.legado.app.ui.filechooser |
||||||
|
|
||||||
|
import android.content.Intent |
||||||
|
import androidx.fragment.app.Fragment |
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.base.BaseActivity |
||||||
|
import io.legado.app.help.permission.Permissions |
||||||
|
import io.legado.app.help.permission.PermissionsCompat |
||||||
|
import io.legado.app.lib.dialogs.alert |
||||||
|
import io.legado.app.utils.toast |
||||||
|
import org.jetbrains.anko.toast |
||||||
|
|
||||||
|
object FilePicker { |
||||||
|
|
||||||
|
fun selectFolder(activity: BaseActivity, requestCode: Int, default: (() -> Unit)? = null) { |
||||||
|
activity.alert(titleResource = R.string.select_folder) { |
||||||
|
val selectList = |
||||||
|
activity.resources.getStringArray(R.array.select_folder).toMutableList() |
||||||
|
default ?: let { |
||||||
|
selectList.removeAt(0) |
||||||
|
} |
||||||
|
items(selectList) { _, index -> |
||||||
|
when (index) { |
||||||
|
0 -> default?.invoke() |
||||||
|
1 -> { |
||||||
|
try { |
||||||
|
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) |
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) |
||||||
|
activity.startActivityForResult(intent, requestCode) |
||||||
|
} catch (e: java.lang.Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
activity.toast(e.localizedMessage ?: "ERROR") |
||||||
|
} |
||||||
|
} |
||||||
|
2 -> { |
||||||
|
PermissionsCompat.Builder(activity) |
||||||
|
.addPermissions(*Permissions.Group.STORAGE) |
||||||
|
.rationale(R.string.tip_perm_request_storage) |
||||||
|
.onGranted { |
||||||
|
FileChooserDialog.show( |
||||||
|
activity.supportFragmentManager, |
||||||
|
requestCode, |
||||||
|
mode = FileChooserDialog.DIRECTORY |
||||||
|
) |
||||||
|
} |
||||||
|
.request() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}.show() |
||||||
|
} |
||||||
|
|
||||||
|
fun selectFolder(fragment: Fragment, requestCode: Int, default: (() -> Unit)? = null) { |
||||||
|
fragment.requireContext() |
||||||
|
.alert(titleResource = R.string.select_folder) { |
||||||
|
val selectList = |
||||||
|
fragment.resources.getStringArray(R.array.select_folder).toMutableList() |
||||||
|
default ?: let { |
||||||
|
selectList.removeAt(0) |
||||||
|
} |
||||||
|
items(selectList) { _, index -> |
||||||
|
when (index) { |
||||||
|
0 -> default?.invoke() |
||||||
|
1 -> { |
||||||
|
try { |
||||||
|
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) |
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) |
||||||
|
fragment.startActivityForResult(intent, requestCode) |
||||||
|
} catch (e: java.lang.Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
fragment.toast(e.localizedMessage ?: "ERROR") |
||||||
|
} |
||||||
|
} |
||||||
|
2 -> { |
||||||
|
PermissionsCompat.Builder(fragment) |
||||||
|
.addPermissions(*Permissions.Group.STORAGE) |
||||||
|
.rationale(R.string.tip_perm_request_storage) |
||||||
|
.onGranted { |
||||||
|
FileChooserDialog.show( |
||||||
|
fragment.childFragmentManager, |
||||||
|
requestCode, |
||||||
|
mode = FileChooserDialog.DIRECTORY |
||||||
|
) |
||||||
|
} |
||||||
|
.request() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}.show() |
||||||
|
} |
||||||
|
|
||||||
|
fun selectFile( |
||||||
|
activity: BaseActivity, |
||||||
|
requestCode: Int, |
||||||
|
type: String, |
||||||
|
default: (() -> Unit)? = null |
||||||
|
) { |
||||||
|
activity.alert(titleResource = R.string.select_file) { |
||||||
|
val selectList = |
||||||
|
activity.resources.getStringArray(R.array.select_folder).toMutableList() |
||||||
|
default ?: let { |
||||||
|
selectList.removeAt(0) |
||||||
|
} |
||||||
|
items(selectList) { _, index -> |
||||||
|
when (index) { |
||||||
|
0 -> default?.invoke() |
||||||
|
1 -> { |
||||||
|
try { |
||||||
|
val intent = Intent(Intent.ACTION_GET_CONTENT) |
||||||
|
intent.addCategory(Intent.CATEGORY_OPENABLE) |
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) |
||||||
|
intent.type = type//设置类型 |
||||||
|
activity.startActivityForResult(intent, requestCode) |
||||||
|
} catch (e: java.lang.Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
activity.toast(e.localizedMessage ?: "ERROR") |
||||||
|
} |
||||||
|
} |
||||||
|
2 -> { |
||||||
|
PermissionsCompat.Builder(activity) |
||||||
|
.addPermissions(*Permissions.Group.STORAGE) |
||||||
|
.rationale(R.string.tip_perm_request_storage) |
||||||
|
.onGranted { |
||||||
|
FileChooserDialog.show( |
||||||
|
activity.supportFragmentManager, |
||||||
|
requestCode, |
||||||
|
mode = FileChooserDialog.FILE |
||||||
|
) |
||||||
|
} |
||||||
|
.request() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}.show() |
||||||
|
} |
||||||
|
|
||||||
|
fun selectFile( |
||||||
|
fragment: Fragment, |
||||||
|
requestCode: Int, |
||||||
|
type: String, |
||||||
|
default: (() -> Unit)? = null |
||||||
|
) { |
||||||
|
fragment.requireContext() |
||||||
|
.alert(titleResource = R.string.select_file) { |
||||||
|
val selectList = |
||||||
|
fragment.resources.getStringArray(R.array.select_folder).toMutableList() |
||||||
|
default ?: let { |
||||||
|
selectList.removeAt(0) |
||||||
|
} |
||||||
|
items(selectList) { _, index -> |
||||||
|
when (index) { |
||||||
|
0 -> default?.invoke() |
||||||
|
1 -> { |
||||||
|
try { |
||||||
|
val intent = Intent(Intent.ACTION_GET_CONTENT) |
||||||
|
intent.addCategory(Intent.CATEGORY_OPENABLE) |
||||||
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) |
||||||
|
intent.type = type//设置类型 |
||||||
|
fragment.startActivityForResult(intent, requestCode) |
||||||
|
} catch (e: java.lang.Exception) { |
||||||
|
e.printStackTrace() |
||||||
|
fragment.toast(e.localizedMessage ?: "ERROR") |
||||||
|
} |
||||||
|
} |
||||||
|
2 -> { |
||||||
|
PermissionsCompat.Builder(fragment) |
||||||
|
.addPermissions(*Permissions.Group.STORAGE) |
||||||
|
.rationale(R.string.tip_perm_request_storage) |
||||||
|
.onGranted { |
||||||
|
FileChooserDialog.show( |
||||||
|
fragment.childFragmentManager, |
||||||
|
requestCode, |
||||||
|
mode = FileChooserDialog.FILE |
||||||
|
) |
||||||
|
} |
||||||
|
.request() |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}.show() |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package io.legado.app.ui.filechooser; |
package io.legado.app.ui.filechooser.utils; |
||||||
|
|
||||||
/** |
/** |
||||||
* Generated by https://github.com/gzu-liyujiang/Image2ByteVar
|
* Generated by https://github.com/gzu-liyujiang/Image2ByteVar
|
Loading…
Reference in new issue