HarmonyOS鸿蒙Next中Flutter image_picker拉起图片选择器后选中获取不到图片
HarmonyOS鸿蒙Next中Flutter image_picker拉起图片选择器后选中获取不到图片 image_picker用的是ohos的版本,这个sdk不需要权限的吧,内部调用的是PhotoViewPicker
老师您好,我这边是真机运行image_picker提供的example案例代码没有复现您的问题,可以正常选择图片,运行环境及版本如下:
flutter版本:3.22.0
image_picker_ohos:0.8.7+4
真机 Pura 70:5.0.5(API17)
您是否能够提供以下信息方便我们这边复现问题进行分析:
-
flutter版本号
-
image_picker_ohos三方库版本号
-
复现问题的最小demo
-
复现问题真机型号代码及版本号
更多关于HarmonyOS鸿蒙Next中Flutter image_picker拉起图片选择器后选中获取不到图片的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter: Flutter 3.27.5-ohos-1.0.0 image_picker_ohos: 0.8.7+4
mate pro 70不行,其他试过好几台也不行,
楼主方便把运行复现的demo打包发来吗,我这边升级了flutter到3.27,跑的官方提供的example,还是可以正常选择图片的。
2025-10-14 18:25:15 3828-3844/hdc E/C02B70/.medialibrary.medialibrarydata/MediaLibrary: Common:{CheckPhotoCallerPermission:370} Have no media permission: ohos.permission.READ_IMAGEVIDEO
2025-10-14 18:25:15 3828-3844/hdc E/C02B70/.medialibrary.medialibrarydata/MediaLibrary: DbPermissionHandler:{ExecuteCheckPermission:150} db is no permission record
2025-10-14 18:25:15 3828-3844/hdc E/C02B70/.medialibrary.medialibrarydata/MediaLibrary: Common:{CheckPhotoCallerPermission:370} Have no media permission: ohos.permission.READ_IMAGEVIDEO
2025-10-14 18:25:15 3828-3844/hdc E/C02B70/.medialibrary.medialibrarydata/MediaLibrary: Extension:{CheckPermissionForOpenFile:748} Permission Denied! err = -13
2025-10-14 18:25:15 3828-3844/hdc E/C02B70/.medialibrary.medialibrarydata/MediaLibrary: Extension:{OpenFile:774} permission deny: -13
2025-10-14 18:25:15 6525-6525/hdc E/C057C2/com.lite.mdiary/IPCObjectProxy: SendRequest 160: failed, handle:46 error:5 desc:*.IDataShare proxy:3793150400 time:458793237267472
2025-10-14 18:25:15 6525-6525/hdc E/C01651/com.lite.mdiary/DataShare: [OpenFile()-datashare_proxy.cpp:94]: OpenFile fail to SendRequest. err: 5
2025-10-14 18:25:15 1477-2587/hdc W/C01342/foundation/ServiceExt: [ability_connect_manager.cpp:770]DisconnectRecordNormal disconnect record:5635
2025-10-14 18:25:15 6525-6525/hdc E/C04388/com.lite.mdiary/file_api: [open.cpp:206->OpenByFileDataUri] Failed to open file by Datashare error -1
2025-10-14 18:25:15 6525-6525/hdc E/A000FF/com.lite.mdiary/Flutter: FileUtils --> open uri file failed err:Error: Operation not permitted
- 运行到模拟器上能正常工作
- 运行到真机上返回结果为null
啥文档也没有,这适配个鸿蒙真的是一坑接一坑
在HarmonyOS Next中,Flutter的image_picker插件无法获取选中图片,主要原因是鸿蒙Next不再支持Android API,而该插件依赖Android的Intent机制。image_picker在鸿蒙上无法调用系统图库或处理返回的图片数据。需要适配鸿蒙的媒体选择API,例如使用@ohos.file.picker模块替代。目前官方Flutter插件尚未针对鸿蒙Next进行兼容更新,需等待社区或官方发布适配版本。
在HarmonyOS Next中使用Flutter的image_picker插件时,如果调用PhotoViewPicker后无法获取选中的图片,可能是以下原因导致的:
-
插件兼容性问题:当前
image_picker的ohos版本可能尚未完全适配HarmonyOS Next的API变更,导致选择器回调异常。建议检查插件版本是否为针对HarmonyOS Next的最新版本。 -
生命周期或上下文问题:
PhotoViewPicker的调用依赖于正确的Ability或UI上下文。如果上下文失效(如页面已销毁),可能导致选择器无法返回数据。请确保在UI线程且页面活跃状态下调用。 -
路径或权限处理差异:虽然
PhotoViewPicker本身不需要显式存储权限,但HarmonyOS Next对文件访问路径可能有新规约。确认插件是否正确处理了返回的URI或文件路径,并确保应用有权限访问该资源。 -
回调监听遗漏:检查
image_picker的返回结果监听代码是否完整。在HarmonyOS中,选择器的结果通常通过异步回调返回,需确保回调函数被正确注册和执行。
建议尝试在真机环境下调试,捕获PhotoViewPicker的返回数据及异常信息,以进一步定位问题。如果问题持续,可考虑暂时通过原生HarmonyOS的图片选择API实现功能,并反馈至插件社区以推动适配。



