diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt index 022cadb05..fad9e35f7 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupEditDialog.kt @@ -26,7 +26,7 @@ class GroupEditDialog() : BaseDialogFragment(R.layout.dialog_book_group_edit) { private val viewModel by viewModels() private var bookGroup: BookGroup? = null val selectImage = registerForActivityResult(SelectImageContract()) { - readUri(it?.second) { name, bytes -> + readUri(it?.uri) { name, bytes -> var file = requireContext().externalFiles file = FileUtils.createFileIfNotExist(file, "covers", name) file.writeBytes(bytes) diff --git a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditActivity.kt index 9a7ebc192..d813cae00 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditActivity.kt @@ -19,7 +19,7 @@ class BookInfoEditActivity : ChangeCoverDialog.CallBack { private val selectCover = registerForActivityResult(SelectImageContract()) { - it?.second?.let { uri -> + it.uri?.let { uri -> coverChangeTo(uri) } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt index 61efde2aa..ba8d839d4 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/BgTextConfigDialog.kt @@ -48,7 +48,7 @@ class BgTextConfigDialog : BaseDialogFragment(R.layout.dialog_read_bg_text) { private var secondaryTextColor = 0 private val importFormNet = "网络导入" private val selectBgImage = registerForActivityResult(SelectImageContract()) { - it?.second?.let { uri -> + it.uri?.let { uri -> setBgFromUri(uri) } } diff --git a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt index 2ad33e459..3e6664953 100644 --- a/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/CoverConfigFragment.kt @@ -21,10 +21,11 @@ class CoverConfigFragment : BasePreferenceFragment(), private val requestCodeCover = 111 private val requestCodeCoverDark = 112 private val selectImage = registerForActivityResult(SelectImageContract()) { - val uri = it?.second ?: return@registerForActivityResult - when (it.first) { - requestCodeCover -> setCoverFromUri(PreferKey.defaultCover, uri) - requestCodeCoverDark -> setCoverFromUri(PreferKey.defaultCoverDark, uri) + it.uri?.let { uri -> + when (it.requestCode) { + requestCodeCover -> setCoverFromUri(PreferKey.defaultCover, uri) + requestCodeCoverDark -> setCoverFromUri(PreferKey.defaultCoverDark, uri) + } } } diff --git a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt index 3d90863ad..06828f99d 100644 --- a/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/ThemeConfigFragment.kt @@ -38,13 +38,14 @@ class ThemeConfigFragment : BasePreferenceFragment(), private val requestCodeBgLight = 121 private val requestCodeBgDark = 122 private val selectImage = registerForActivityResult(SelectImageContract()) { - val uri = it?.second ?: return@registerForActivityResult - when (it.first) { - requestCodeBgLight -> setBgFromUri(uri, PreferKey.bgImage) { - upTheme(false) - } - requestCodeBgDark -> setBgFromUri(uri, PreferKey.bgImageN) { - upTheme(true) + it.uri?.let { uri -> + when (it.requestCode) { + requestCodeBgLight -> setBgFromUri(uri, PreferKey.bgImage) { + upTheme(false) + } + requestCodeBgDark -> setBgFromUri(uri, PreferKey.bgImageN) { + upTheme(true) + } } } } diff --git a/app/src/main/java/io/legado/app/ui/qrcode/QrCodeActivity.kt b/app/src/main/java/io/legado/app/ui/qrcode/QrCodeActivity.kt index 9fd550b08..920d318b9 100644 --- a/app/src/main/java/io/legado/app/ui/qrcode/QrCodeActivity.kt +++ b/app/src/main/java/io/legado/app/ui/qrcode/QrCodeActivity.kt @@ -20,7 +20,7 @@ class QrCodeActivity : BaseActivity(), OnScanResul override val binding by viewBinding(ActivityQrcodeCaptureBinding::inflate) private val selectQrImage = registerForActivityResult(SelectImageContract()) { - it?.second?.readBytes(this)?.let { bytes -> + it?.uri?.readBytes(this)?.let { bytes -> val bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.size) onScanResultCallback(QRCodeUtils.parseCodeResult(bitmap)) } diff --git a/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt b/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt index 5aebe1890..cf1ce1262 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt @@ -7,7 +7,7 @@ import android.net.Uri import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContract -class SelectImageContract : ActivityResultContract?>() { +class SelectImageContract : ActivityResultContract() { var requestCode: Int? = null @@ -18,13 +18,18 @@ class SelectImageContract : ActivityResultContract?>() { .setType("image/*") } - override fun parseResult(resultCode: Int, intent: Intent?): Pair? { + override fun parseResult(resultCode: Int, intent: Intent?): Result { if (resultCode == RESULT_OK) { - return Pair(requestCode, intent?.data) + return Result(requestCode, intent?.data) } - return null + return Result(requestCode, null) } + data class Result( + val requestCode: Int?, + val uri: Uri? = null + ) + } class StartActivityForResult(private val cls: Class<*>) :