Skip to content

Commit

Permalink
Merge pull request #23 from p-shapovalov/fix/android-q
Browse files Browse the repository at this point in the history
Fix/android q
  • Loading branch information
howljs committed Feb 23, 2024
2 parents 116e093 + 0d26115 commit 76d3310
Showing 1 changed file with 23 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import com.luck.picture.lib.config.SelectModeConfig
import com.luck.picture.lib.config.SelectorConfig
import com.luck.picture.lib.dialog.RemindDialog
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.engine.UriToFileTransformEngine;
import com.luck.picture.lib.interfaces.OnInjectLayoutResourceListener
import com.luck.picture.lib.interfaces.OnResultCallbackListener
import com.luck.picture.lib.permissions.PermissionConfig
Expand All @@ -36,6 +37,8 @@ import com.luck.picture.lib.style.SelectMainStyle
import com.luck.picture.lib.style.TitleBarStyle
import com.luck.picture.lib.utils.DateUtils
import com.luck.picture.lib.utils.MediaUtils
import com.luck.picture.lib.utils.SandboxTransformUtils;
import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener
import com.yalantis.ucrop.UCrop
import com.yalantis.ucrop.UCropImageEngine
import com.yalantis.ucrop.model.AspectRatio
Expand All @@ -52,6 +55,18 @@ import io.flutter.plugin.common.PluginRegistry
import java.io.File
import java.net.URLConnection

private class AndroidQSandboxFileEngine : UriToFileTransformEngine {
override fun onUriToFileAsyncTransform(
context: Context,
srcPath: String?,
mineType: String?,
call: OnKeyValueResultCallbackListener?
) {
if (call != null) {
call.onCallback(srcPath, SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType))
}
}
}

/** HLImagePickerPlugin */
class HLImagePickerPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, PluginRegistry.ActivityResultListener {
Expand Down Expand Up @@ -122,6 +137,7 @@ class HLImagePickerPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Plu
.setPermissionDeniedListener { fragment, permissionArray, _, _ ->
handlePermissionDenied(fragment, permissionArray)
}
.setSandboxFileEngine(AndroidQSandboxFileEngine())
.forResultActivity(object : OnResultCallbackListener<LocalMedia> {
override fun onResult(result: ArrayList<LocalMedia>?) {
if (result != null) {
Expand Down Expand Up @@ -211,6 +227,7 @@ class HLImagePickerPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Plu
}
})
.setInjectLayoutResourceListener(InjectLayoutResourceListener())
.setSandboxFileEngine(AndroidQSandboxFileEngine())
.forResult(object : OnResultCallbackListener<LocalMedia?> {
override fun onResult(result: ArrayList<LocalMedia?>?) {
shouldReturnOnDestroy = false
Expand Down Expand Up @@ -350,18 +367,19 @@ class HLImagePickerPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Plu
}

private fun buildResponse(media: LocalMedia): Map<String, Any> {
val path = media.getAvailablePath()
if (media.width == 0 || media.height == 0 || media.isCompressed) {
if (PictureMimeType.isHasImage(media.mimeType)) {
val imageExtraInfo = MediaUtils.getImageSize(applicationContext, media.compressPath ?: media.realPath)
val imageExtraInfo = MediaUtils.getImageSize(applicationContext, path)
media.width = imageExtraInfo.width
media.height = imageExtraInfo.height
} else if (PictureMimeType.isHasVideo(media.mimeType)) {
val imageExtraInfo = MediaUtils.getVideoSize(applicationContext, media.compressPath ?: media.realPath)
val imageExtraInfo = MediaUtils.getVideoSize(applicationContext, path)
media.width = imageExtraInfo.width
media.height = imageExtraInfo.height
}
if (media.isCompressed) {
val file = File(media.compressPath)
val file = File(path)
media.fileName = file.name
media.size = file.length()
val fileNameMap = URLConnection.getFileNameMap()
Expand All @@ -387,12 +405,12 @@ class HLImagePickerPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Plu
if (media.isCut) {
item["width"] = media.cropImageWidth
item["height"] = media.cropImageHeight
item["path"] = media.cutPath
} else {
item["width"] = media.width
item["height"] = media.height
item["path"] = media.realPath
}

item["path"] = path
return item
}

Expand Down

0 comments on commit 76d3310

Please sign in to comment.