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 f354dbcab..78dd8b8cc 100644 --- a/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt +++ b/app/src/main/java/io/legado/app/utils/ActivityResultContracts.kt @@ -1,12 +1,13 @@ package io.legado.app.utils -import android.app.Activity.RESULT_OK import android.content.Context import android.content.Intent import android.net.Uri import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContract +import androidx.activity.result.contract.ActivityResultContracts fun ActivityResultLauncher.launch() { launch(null) @@ -14,20 +15,17 @@ fun ActivityResultLauncher.launch() { class SelectImageContract : ActivityResultContract() { + private val delegate = ActivityResultContracts.PickVisualMedia() var requestCode: Int? = null override fun createIntent(context: Context, input: Int?): Intent { requestCode = input - return Intent(Intent.ACTION_GET_CONTENT) - .addCategory(Intent.CATEGORY_OPENABLE) - .setType("image/*") + val request = PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly) + return delegate.createIntent(context, request) } override fun parseResult(resultCode: Int, intent: Intent?): Result { - if (resultCode == RESULT_OK) { - return Result(requestCode, intent?.data) - } - return Result(requestCode, null) + return Result(requestCode, delegate.parseResult(resultCode, intent)) } data class Result(