导入背景失败问题 #81

This commit is contained in:
HapeLee
2025-10-12 13:14:00 +08:00
parent bfc843d410
commit 16558242d8
2 changed files with 21 additions and 13 deletions
@@ -41,15 +41,20 @@ class HandleFileContract :
}
override fun parseResult(resultCode: Int, intent: Intent?): Result {
val uri = if (resultCode != RESULT_OK || intent?.data == null ||
RealPathUtil.getTreePath(intent.data!!)
?.startsWith(appCtx.externalFiles.parent!!) == true
if (resultCode != RESULT_OK || intent == null) {
return Result(null, requestCode, null)
}
val dataUri = intent.data
val uri = if (dataUri == null ||
RealPathUtil.getTreePath(dataUri)?.startsWith(appCtx.externalFiles.parent!!) == true
) {
null
} else {
intent.data
dataUri
}
return Result(uri, requestCode, intent?.getStringExtra("value"))
return Result(uri, requestCode, intent.getStringExtra("value"))
}
companion object {
@@ -26,22 +26,25 @@ class SelectImageContract : ActivityResultContract<Int?, SelectImageContract.Res
val intent = Intent(Intent.ACTION_GET_CONTENT)
.addCategory(Intent.CATEGORY_OPENABLE)
.setType("image/*")
if (intent.resolveActivity(appCtx.packageManager) == null) {
useFallback = true
useFallback = intent.resolveActivity(appCtx.packageManager) == null
return if (useFallback) {
val request = PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
return delegate.createIntent(context, request)
delegate.createIntent(context, request)
} else {
intent
}
return intent
}
override fun parseResult(resultCode: Int, intent: Intent?): Result {
val uri = if (useFallback) {
val isFallback = useFallback
useFallback = false
val uri = if (isFallback) {
delegate.parseResult(resultCode, intent)
} else if (resultCode == RESULT_OK) {
intent?.data
} else {
null
}
} else null
return Result(requestCode, uri)
}