diff --git a/app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt b/app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt index 5fde57fb7..ba1b8dd5a 100644 --- a/app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt +++ b/app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt @@ -3,6 +3,7 @@ package io.legado.app.ui.config import android.app.Activity.RESULT_OK import android.content.Intent import android.net.Uri +import android.os.Build import androidx.documentfile.provider.DocumentFile import androidx.fragment.app.Fragment import io.legado.app.App @@ -17,10 +18,7 @@ import io.legado.app.help.storage.ImportOldData import io.legado.app.help.storage.Restore import io.legado.app.help.storage.WebDavHelp import io.legado.app.lib.dialogs.alert -import io.legado.app.lib.dialogs.noButton -import io.legado.app.lib.dialogs.yesButton import io.legado.app.ui.filechooser.FileChooserDialog -import io.legado.app.utils.applyTint import io.legado.app.utils.getPrefString import io.legado.app.utils.isContentPath import io.legado.app.utils.toast @@ -169,26 +167,44 @@ object BackupRestoreUi { } fun importOldData(fragment: Fragment) { - try { - val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - fragment.startActivityForResult(intent, oldDataRequestCode) - } catch (e: Exception) { - fragment.alert(title = "导入") { - message = "是否导入旧版本数据" - yesButton { - PermissionsCompat.Builder(fragment) - .addPermissions(*Permissions.Group.STORAGE) - .rationale(R.string.tip_perm_request_storage) - .onGranted { - ImportOldData.import(fragment.requireContext()) + fragment.alert { + titleResource = R.string.select_folder + items(fragment.resources.getStringArray(R.array.select_folder).toList()) { _, index -> + when (index) { + 0 -> importOldUsePermission(fragment) + 1 -> { + try { + val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + fragment.startActivityForResult(intent, oldDataRequestCode) + } catch (e: java.lang.Exception) { + e.printStackTrace() + fragment.toast(e.localizedMessage ?: "ERROR") } - .request() - } - noButton { + } + 2 -> { + FileChooserDialog.show( + fragment.childFragmentManager, + oldDataRequestCode, + mode = FileChooserDialog.DIRECTORY + ) + } } - }.show().applyTint() + } + }.show() + } + + private fun importOldUsePermission(fragment: Fragment) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + fragment.toast(R.string.a10_permission_toast) } + PermissionsCompat.Builder(fragment) + .addPermissions(*Permissions.Group.STORAGE) + .rationale(R.string.tip_perm_request_storage) + .onGranted { + ImportOldData.import(fragment.requireContext()) + } + .request() } fun onFilePicked(requestCode: Int, currentPath: String) { diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml deleted file mode 100644 index 78554f9eb..000000000 --- a/app/src/main/res/values-zh/strings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 584ac698a..8094ad0df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -601,6 +601,7 @@ 正在启动服务\n具体信息查看通知栏 默认路径 系统文件夹选择器 - 自带选择器(Android10以上可能会失效) + 自带选择器 + Android10以上因为权限限制可能无法读取文件