This commit is contained in:
Horis
2025-02-23 22:16:03 +08:00
parent e9ae027d15
commit c6533847a3
@@ -1,12 +1,13 @@
package io.legado.app.utils package io.legado.app.utils
import android.app.Activity.RESULT_OK
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResult
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContract import androidx.activity.result.contract.ActivityResultContract
import androidx.activity.result.contract.ActivityResultContracts
fun <T> ActivityResultLauncher<T?>.launch() { fun <T> ActivityResultLauncher<T?>.launch() {
launch(null) launch(null)
@@ -14,20 +15,17 @@ fun <T> ActivityResultLauncher<T?>.launch() {
class SelectImageContract : ActivityResultContract<Int?, SelectImageContract.Result>() { class SelectImageContract : ActivityResultContract<Int?, SelectImageContract.Result>() {
private val delegate = ActivityResultContracts.PickVisualMedia()
var requestCode: Int? = null var requestCode: Int? = null
override fun createIntent(context: Context, input: Int?): Intent { override fun createIntent(context: Context, input: Int?): Intent {
requestCode = input requestCode = input
return Intent(Intent.ACTION_GET_CONTENT) val request = PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
.addCategory(Intent.CATEGORY_OPENABLE) return delegate.createIntent(context, request)
.setType("image/*")
} }
override fun parseResult(resultCode: Int, intent: Intent?): Result { override fun parseResult(resultCode: Int, intent: Intent?): Result {
if (resultCode == RESULT_OK) { return Result(requestCode, delegate.parseResult(resultCode, intent))
return Result(requestCode, intent?.data)
}
return Result(requestCode, null)
} }
data class Result( data class Result(