diff --git a/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt index bb07f1dd6..fc4d51c94 100644 --- a/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/local/ImportBookActivity.kt @@ -72,7 +72,7 @@ class ImportBookActivity : VMBaseActivity selectFolder.launch {} + R.id.menu_select_folder -> selectFolder.launch(null) R.id.menu_scan_folder -> scanFolder() R.id.menu_import_file_name -> alertImportFileName() } @@ -133,7 +133,7 @@ class ImportBookActivity : VMBaseActivity { binding.tvEmptyMsg.visible() - selectFolder.launch {} + selectFolder.launch(null) } lastPath.isContentScheme() -> { val rootUri = Uri.parse(lastPath) @@ -141,7 +141,7 @@ class ImportBookActivity : VMBaseActivity Build.VERSION_CODES.Q -> { binding.tvEmptyMsg.visible() - selectFolder.launch {} + selectFolder.launch(null) } else -> initRootPath(lastPath) } @@ -172,7 +172,7 @@ class ImportBookActivity : VMBaseActivity Unit, HandleFileContract.Result>() { + ActivityResultContract<(HandleFileContract.HandleFileParam.() -> Unit)?, HandleFileContract.Result>() { private var requestCode: Int = 0 - override fun createIntent(context: Context, input: (HandleFileParam.() -> Unit)): Intent { + override fun createIntent(context: Context, input: (HandleFileParam.() -> Unit)?): Intent { val intent = Intent(context, HandleFileActivity::class.java) val handleFileParam = HandleFileParam() - handleFileParam.apply(input) + input?.let { + handleFileParam.apply(input) + } handleFileParam.let { requestCode = it.requestCode intent.putExtra("mode", it.mode) diff --git a/app/src/main/java/io/legado/app/ui/qrcode/QrCodeResult.kt b/app/src/main/java/io/legado/app/ui/qrcode/QrCodeResult.kt index e98d0c249..d93184ca3 100644 --- a/app/src/main/java/io/legado/app/ui/qrcode/QrCodeResult.kt +++ b/app/src/main/java/io/legado/app/ui/qrcode/QrCodeResult.kt @@ -5,9 +5,9 @@ import android.content.Context import android.content.Intent import androidx.activity.result.contract.ActivityResultContract -class QrCodeResult : ActivityResultContract() { +class QrCodeResult : ActivityResultContract() { - override fun createIntent(context: Context, input: Unit): Intent { + override fun createIntent(context: Context, input: Unit?): Intent { return Intent(context, QrCodeActivity::class.java) } 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 9291dca05..ce9dd0cd5 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt @@ -7,11 +7,11 @@ 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 - override fun createIntent(context: Context, input: Int): Intent { + override fun createIntent(context: Context, input: Int?): Intent { requestCode = input return Intent(Intent.ACTION_GET_CONTENT) .addCategory(Intent.CATEGORY_OPENABLE) @@ -33,11 +33,13 @@ class SelectImageContract : ActivityResultContract) : - ActivityResultContract Unit, ActivityResult>() { + ActivityResultContract<(Intent.() -> Unit)?, ActivityResult>() { - override fun createIntent(context: Context, input: Intent.() -> Unit): Intent { + override fun createIntent(context: Context, input: (Intent.() -> Unit)?): Intent { val intent = Intent(context, cls) - intent.apply(input) + input?.let { + intent.apply(input) + } return intent }