pull/94/head
kunfei 5 years ago
parent 55c74c7565
commit 77c36c577b
  1. 56
      app/src/main/java/io/legado/app/ui/config/BackupRestoreUi.kt
  2. 5
      app/src/main/res/values-zh/strings.xml
  3. 3
      app/src/main/res/values/strings.xml

@ -3,6 +3,7 @@ package io.legado.app.ui.config
import android.app.Activity.RESULT_OK import android.app.Activity.RESULT_OK
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import io.legado.app.App 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.Restore
import io.legado.app.help.storage.WebDavHelp import io.legado.app.help.storage.WebDavHelp
import io.legado.app.lib.dialogs.alert 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.ui.filechooser.FileChooserDialog
import io.legado.app.utils.applyTint
import io.legado.app.utils.getPrefString import io.legado.app.utils.getPrefString
import io.legado.app.utils.isContentPath import io.legado.app.utils.isContentPath
import io.legado.app.utils.toast import io.legado.app.utils.toast
@ -169,26 +167,44 @@ object BackupRestoreUi {
} }
fun importOldData(fragment: Fragment) { fun importOldData(fragment: Fragment) {
try { fragment.alert {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) titleResource = R.string.select_folder
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) items(fragment.resources.getStringArray(R.array.select_folder).toList()) { _, index ->
fragment.startActivityForResult(intent, oldDataRequestCode) when (index) {
} catch (e: Exception) { 0 -> importOldUsePermission(fragment)
fragment.alert(title = "导入") { 1 -> {
message = "是否导入旧版本数据" try {
yesButton { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
PermissionsCompat.Builder(fragment) intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
.addPermissions(*Permissions.Group.STORAGE) fragment.startActivityForResult(intent, oldDataRequestCode)
.rationale(R.string.tip_perm_request_storage) } catch (e: java.lang.Exception) {
.onGranted { e.printStackTrace()
ImportOldData.import(fragment.requireContext()) fragment.toast(e.localizedMessage ?: "ERROR")
} }
.request() }
} 2 -> {
noButton { 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) { fun onFilePicked(requestCode: Int, currentPath: String) {

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

@ -601,6 +601,7 @@
<string name="service_start">正在启动服务\n具体信息查看通知栏</string> <string name="service_start">正在启动服务\n具体信息查看通知栏</string>
<string name="default_path">默认路径</string> <string name="default_path">默认路径</string>
<string name="sys_folder_picker">系统文件夹选择器</string> <string name="sys_folder_picker">系统文件夹选择器</string>
<string name="app_folder_picker">自带选择器(Android10以上可能会失效)</string> <string name="app_folder_picker">自带选择器</string>
<string name="a10_permission_toast">Android10以上因为权限限制可能无法读取文件</string>
</resources> </resources>

Loading…
Cancel
Save