diff --git a/app/src/main/java/io/legado/app/help/config/LocalConfig.kt b/app/src/main/java/io/legado/app/help/config/LocalConfig.kt index 3981acaf3..078fa0041 100644 --- a/app/src/main/java/io/legado/app/help/config/LocalConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/LocalConfig.kt @@ -6,12 +6,22 @@ import androidx.core.content.edit import io.legado.app.utils.getBoolean import io.legado.app.utils.putBoolean import io.legado.app.utils.putLong +import io.legado.app.utils.putString import splitties.init.appCtx object LocalConfig : SharedPreferences by appCtx.getSharedPreferences("local", Context.MODE_PRIVATE) { private const val versionCodeKey = "appVersionCode" + /** + * 本地密码,用来对需要备份的敏感信息加密,如 webdav 配置等 + */ + var password: String + get() = getString("password", "") ?: "" + set(value) { + putString("password", value) + } + var lastBackup: Long get() = getLong("lastBackup", 0) set(value) { diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index 2a471f983..9c38a6ab9 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -23,6 +23,7 @@ import io.legado.app.constant.AppConst.appInfo import io.legado.app.constant.EventBus import io.legado.app.constant.PreferKey import io.legado.app.databinding.ActivityMainBinding +import io.legado.app.databinding.DialogEditTextBinding import io.legado.app.help.AppWebDav import io.legado.app.help.book.BookHelp import io.legado.app.help.config.AppConfig @@ -103,6 +104,8 @@ class MainActivity : VMBaseActivity(), if (!privacyPolicy()) return@launch //版本更新 upVersion() + //设置本地密码 + setLocalPassword() //备份同步 backupSync() //自动更新书籍 @@ -181,7 +184,7 @@ class MainActivity : VMBaseActivity(), */ private suspend fun upVersion() = suspendCoroutine { block -> if (LocalConfig.versionCode == appInfo.versionCode) { - block.resume(Unit) + block.resume(null) return@suspendCoroutine } LocalConfig.versionCode = appInfo.versionCode @@ -189,18 +192,43 @@ class MainActivity : VMBaseActivity(), val help = String(assets.open("help/appHelp.md").readBytes()) val dialog = TextDialog(getString(R.string.help), help, TextDialog.Mode.MD) dialog.setOnDismissListener { - block.resume(Unit) + block.resume(null) } showDialogFragment(dialog) } else if (!BuildConfig.DEBUG) { val log = String(assets.open("updateLog.md").readBytes()) val dialog = TextDialog(getString(R.string.update_log), log, TextDialog.Mode.MD) dialog.setOnDismissListener { - block.resume(Unit) + block.resume(null) } showDialogFragment(dialog) } else { - block.resume(Unit) + block.resume(null) + } + } + + /** + * 设置本地密码 + */ + private suspend fun setLocalPassword() = suspendCoroutine { block -> + if (LocalConfig.password.isNotBlank()) { + block.resume(null) + return@suspendCoroutine + } + alert(R.string.set_local_password, R.string.set_local_password_summary) { + val editTextBinding = DialogEditTextBinding.inflate(layoutInflater).apply { + editView.hint = "password" + } + customView { + editTextBinding.root + } + onDismiss { + block.resume(null) + } + okButton { + LocalConfig.password = editTextBinding.editView.text.toString() + } + cancelButton() } } diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index da1b8ed38..7df6e0f14 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1094,4 +1094,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 27c5ea43d..6123a206b 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1097,4 +1097,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index cdcfed3c0..2441133c3 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1097,4 +1097,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 599d6fb7f..051a3b5ff 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1094,4 +1094,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 3086b5ee0..f28559249 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1096,4 +1096,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index f84b1d662..f01f24730 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1096,4 +1096,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc058abe5..4f76c089f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1097,4 +1097,6 @@ 文字下划线 选中新增源 选中更新源 + 设置本地密码 + 本地密码用来对备份的敏感信息加密和解密,如需在不同设备之间同步,本地密码需一致.