|
@@ -5,10 +5,9 @@ import android.app.Activity
|
|
|
import android.app.Dialog
|
|
|
import android.content.*
|
|
|
import android.net.Uri
|
|
|
-import android.os.Build
|
|
|
import android.os.Bundle
|
|
|
-import androidx.preference.PreferenceScreen
|
|
|
import android.view.View
|
|
|
+import androidx.preference.PreferenceScreen
|
|
|
import com.afollestad.materialdialogs.MaterialDialog
|
|
|
import com.hippo.unifile.UniFile
|
|
|
import eu.kanade.tachiyomi.R
|
|
@@ -106,21 +105,12 @@ class SettingsBackupController : SettingsController() {
|
|
|
onClick {
|
|
|
val currentDir = preferences.backupsDirectory().getOrDefault()
|
|
|
try{
|
|
|
- val intent = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
|
|
- // Custom dir selected, open directory selector
|
|
|
- preferences.context.getFilePicker(currentDir)
|
|
|
- } else {
|
|
|
- Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
|
|
- }
|
|
|
-
|
|
|
+ val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
|
|
startActivityForResult(intent, CODE_BACKUP_DIR)
|
|
|
} catch (e: ActivityNotFoundException){
|
|
|
- //Fall back to custom picker on error
|
|
|
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
|
|
|
- startActivityForResult(preferences.context.getFilePicker(currentDir), CODE_BACKUP_DIR)
|
|
|
- }
|
|
|
+ // Fall back to custom picker on error
|
|
|
+ startActivityForResult(preferences.context.getFilePicker(currentDir), CODE_BACKUP_DIR)
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
preferences.backupsDirectory().asObservable()
|
|
@@ -154,37 +144,27 @@ class SettingsBackupController : SettingsController() {
|
|
|
// Get uri of backup folder.
|
|
|
val uri = data.data
|
|
|
|
|
|
- // Get UriPermission so it's possible to write files post kitkat.
|
|
|
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
|
|
|
- val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
|
|
|
- Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
|
|
+ // Get UriPermission so it's possible to write files
|
|
|
+ val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
|
|
|
+ Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
|
|
|
|
|
- activity.contentResolver.takePersistableUriPermission(uri, flags)
|
|
|
- }
|
|
|
+ activity.contentResolver.takePersistableUriPermission(uri, flags)
|
|
|
|
|
|
- // Set backup Uri.
|
|
|
+ // Set backup Uri
|
|
|
preferences.backupsDirectory().set(uri.toString())
|
|
|
}
|
|
|
CODE_BACKUP_CREATE -> if (data != null && resultCode == Activity.RESULT_OK) {
|
|
|
val activity = activity ?: return
|
|
|
- val uri = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
|
|
- val dir = data.data.path
|
|
|
- val file = File(dir, Backup.getDefaultFilename())
|
|
|
-
|
|
|
- Uri.fromFile(file)
|
|
|
- } else {
|
|
|
- val uri = data.data
|
|
|
- val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
|
|
|
- Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
|
|
|
|
|
- activity.contentResolver.takePersistableUriPermission(uri, flags)
|
|
|
- val file = UniFile.fromUri(activity, uri)
|
|
|
+ val uri = data.data
|
|
|
+ val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
|
|
|
+ Intent.FLAG_GRANT_WRITE_URI_PERMISSION
|
|
|
|
|
|
- file.uri
|
|
|
- }
|
|
|
+ activity.contentResolver.takePersistableUriPermission(uri, flags)
|
|
|
+ val file = UniFile.fromUri(activity, uri)
|
|
|
|
|
|
CreatingBackupDialog().showDialog(router, TAG_CREATING_BACKUP_DIALOG)
|
|
|
- BackupCreateService.makeBackup(activity, uri, backupFlags)
|
|
|
+ BackupCreateService.makeBackup(activity, file.uri, backupFlags)
|
|
|
}
|
|
|
CODE_BACKUP_RESTORE -> if (data != null && resultCode == Activity.RESULT_OK) {
|
|
|
val uri = data.data
|
|
@@ -201,25 +181,17 @@ class SettingsBackupController : SettingsController() {
|
|
|
val currentDir = preferences.backupsDirectory().getOrDefault()
|
|
|
|
|
|
try {
|
|
|
- // If API is lower than Lollipop use custom picker
|
|
|
- val intent = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
|
|
|
- preferences.context.getFilePicker(currentDir)
|
|
|
- } else {
|
|
|
- // Use Androids build in file creator
|
|
|
- Intent(Intent.ACTION_CREATE_DOCUMENT)
|
|
|
+ // Use Android's built-in file creator
|
|
|
+ val intent = Intent(Intent.ACTION_CREATE_DOCUMENT)
|
|
|
.addCategory(Intent.CATEGORY_OPENABLE)
|
|
|
.setType("application/*")
|
|
|
.putExtra(Intent.EXTRA_TITLE, Backup.getDefaultFilename())
|
|
|
- }
|
|
|
|
|
|
startActivityForResult(intent, CODE_BACKUP_CREATE)
|
|
|
} catch (e: ActivityNotFoundException) {
|
|
|
// Handle errors where the android ROM doesn't support the built in picker
|
|
|
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
|
|
|
- startActivityForResult(preferences.context.getFilePicker(currentDir), CODE_BACKUP_CREATE)
|
|
|
- }
|
|
|
+ startActivityForResult(preferences.context.getFilePicker(currentDir), CODE_BACKUP_CREATE)
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
class CreateBackupDialog : DialogController() {
|