优化
This commit is contained in:
@@ -3,6 +3,7 @@ package io.legado.app.ui.file
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.os.Environment
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
@@ -17,6 +18,7 @@ import io.legado.app.lib.dialogs.SelectItem
|
|||||||
import io.legado.app.lib.dialogs.alert
|
import io.legado.app.lib.dialogs.alert
|
||||||
import io.legado.app.lib.permission.Permissions
|
import io.legado.app.lib.permission.Permissions
|
||||||
import io.legado.app.lib.permission.PermissionsCompat
|
import io.legado.app.lib.permission.PermissionsCompat
|
||||||
|
import io.legado.app.utils.checkWrite
|
||||||
import io.legado.app.utils.getJsonArray
|
import io.legado.app.utils.getJsonArray
|
||||||
import io.legado.app.utils.isContentScheme
|
import io.legado.app.utils.isContentScheme
|
||||||
import io.legado.app.utils.launch
|
import io.legado.app.utils.launch
|
||||||
@@ -141,7 +143,7 @@ class HandleFileActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
112 -> { // 手动输入目录路径
|
112 -> checkPermissions { // 手动输入目录路径
|
||||||
showInputDirectoryDialog()
|
showInputDirectoryDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,21 +173,44 @@ class HandleFileActivity :
|
|||||||
customView { alertBinding.root }
|
customView { alertBinding.root }
|
||||||
okButton {
|
okButton {
|
||||||
val inputPath = alertBinding.editView.text.toString()
|
val inputPath = alertBinding.editView.text.toString()
|
||||||
if (inputPath.isNotBlank()) {
|
if (inputPath.isBlank()) {
|
||||||
val file = File(inputPath)
|
|
||||||
if (file.exists() && file.isDirectory && file.canRead()) {
|
|
||||||
onResult(Intent().setData(Uri.fromFile(file)))
|
|
||||||
} else {
|
|
||||||
toastOnUi(getString(R.string.invalid_directory))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
toastOnUi(getString(R.string.empty_directory_input))
|
toastOnUi(getString(R.string.empty_directory_input))
|
||||||
|
return@okButton
|
||||||
}
|
}
|
||||||
|
val file = File(inputPath)
|
||||||
|
if (file.exists() &&
|
||||||
|
file.isDirectory &&
|
||||||
|
isExternalStorage(file) &&
|
||||||
|
file.checkWrite()
|
||||||
|
) {
|
||||||
|
onResult(Intent().setData(Uri.fromFile(file)))
|
||||||
|
} else {
|
||||||
|
toastOnUi(getString(R.string.invalid_directory))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onDismiss {
|
||||||
|
finish()
|
||||||
}
|
}
|
||||||
cancelButton()
|
cancelButton()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isExternalStorage(path: File): Boolean {
|
||||||
|
try {
|
||||||
|
if (Environment.isExternalStorageEmulated(path)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} catch (_: IllegalArgumentException) {
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (Environment.isExternalStorageRemovable(path)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} catch (_: IllegalArgumentException) {
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
private fun getFileData(): Triple<String, Any, String>? {
|
private fun getFileData(): Triple<String, Any, String>? {
|
||||||
val fileName = intent.getStringExtra("fileName")
|
val fileName = intent.getStringExtra("fileName")
|
||||||
val file = intent.getStringExtra("fileKey")?.let {
|
val file = intent.getStringExtra("fileKey")?.let {
|
||||||
|
|||||||
Reference in New Issue
Block a user