导入背景失败问题 #81
This commit is contained in:
@@ -41,15 +41,20 @@ class HandleFileContract :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun parseResult(resultCode: Int, intent: Intent?): Result {
|
override fun parseResult(resultCode: Int, intent: Intent?): Result {
|
||||||
val uri = if (resultCode != RESULT_OK || intent?.data == null ||
|
if (resultCode != RESULT_OK || intent == null) {
|
||||||
RealPathUtil.getTreePath(intent.data!!)
|
return Result(null, requestCode, null)
|
||||||
?.startsWith(appCtx.externalFiles.parent!!) == true
|
}
|
||||||
|
|
||||||
|
val dataUri = intent.data
|
||||||
|
val uri = if (dataUri == null ||
|
||||||
|
RealPathUtil.getTreePath(dataUri)?.startsWith(appCtx.externalFiles.parent!!) == true
|
||||||
) {
|
) {
|
||||||
null
|
null
|
||||||
} else {
|
} else {
|
||||||
intent.data
|
dataUri
|
||||||
}
|
}
|
||||||
return Result(uri, requestCode, intent?.getStringExtra("value"))
|
|
||||||
|
return Result(uri, requestCode, intent.getStringExtra("value"))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -26,22 +26,25 @@ class SelectImageContract : ActivityResultContract<Int?, SelectImageContract.Res
|
|||||||
val intent = Intent(Intent.ACTION_GET_CONTENT)
|
val intent = Intent(Intent.ACTION_GET_CONTENT)
|
||||||
.addCategory(Intent.CATEGORY_OPENABLE)
|
.addCategory(Intent.CATEGORY_OPENABLE)
|
||||||
.setType("image/*")
|
.setType("image/*")
|
||||||
if (intent.resolveActivity(appCtx.packageManager) == null) {
|
useFallback = intent.resolveActivity(appCtx.packageManager) == null
|
||||||
useFallback = true
|
return if (useFallback) {
|
||||||
val request = PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
|
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 {
|
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)
|
delegate.parseResult(resultCode, intent)
|
||||||
} else if (resultCode == RESULT_OK) {
|
} else if (resultCode == RESULT_OK) {
|
||||||
intent?.data
|
intent?.data
|
||||||
} else {
|
} else null
|
||||||
null
|
|
||||||
}
|
|
||||||
return Result(requestCode, uri)
|
return Result(requestCode, uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user