gpt4 book ai didi

android - 如何解决在直接将图像从 android 库共享到我的 flutter 应用程序时收到的奇怪和不完整的 Uri 和路径

转载 作者:行者123 更新时间:2023-12-04 23:39:14 27 4
gpt4 key购买 nike

我在 Kotlin 中为 Flutter 应用程序编写了一个功能,可以将媒体文件直接从 android 手机图库共享到应用程序。
在我测试过的许多设备上运行良好,例如 Realme 3 Pro、Oneplus 6t、Samsung m40。
但是,对于 Asus Zenfone Max Pro M2在共享任何媒体文件时收到奇怪且不完整的 URI & path 来自 Kotlin 代码的日志

D/URI=====(26032) : content://com.android.providers.downloads.documents/document/624


D/Path =====(26032): /document/624


Kotlin 代码
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
this.binding = binding
binding.addOnNewIntentListener(this)
handleIntent(binding.activity.intent, true)
}
----------------------------------------------------------------------
private fun handleIntent(intent: Intent, initial: Boolean) {
when {
(intent.type?.startsWith("text") != true)
&& (intent.action == Intent.ACTION_SEND
|| intent.action == Intent.ACTION_SEND_MULTIPLE) -> { // Sharing images or videos

val value = getMediaUris(intent)
if (initial) initialMedia = value
latestMedia = value
eventSinkMedia?.success(latestMedia?.toString())
}
...
----------------------------------------------------------------------
private fun getMediaUris(intent: Intent?): JSONArray? {
if (intent == null) return null

return when (intent.action) {
Intent.ACTION_SEND -> {
val uri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
Log.d("URI =====",uri)
val path = uri?.let{ FileDirectory.getPathFromUri(applicationContext, it) } ?: uri?.path
Log.d("Path =====",path)
if (path != null) {
...
设备信息
Device Name: Asus Zenfone Max Pro M2
Android Version: 9
External SD card: present
如何解析此 URI 并获得带有文件名和扩展名的正确路径?

最佳答案

您可以使用uri_to_filecontent://uri 获取路径的插件.要使用,只需解析 uri 并使用 toFile(uri)

import 'package:uri_to_file/uri_to_file.dart';

try {
String uriPath = 'content://com.android.providers.downloads.documents/document/624';
Uri uri = Uri.parse(uriPath);
File file = await toFile(uri);
} catch (e) {
debugPrint(e);
}

关于android - 如何解决在直接将图像从 android 库共享到我的 flutter 应用程序时收到的奇怪和不完整的 Uri 和路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70971422/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com