HarmonyOS鸿蒙Next中用的flutter无法使用save_button,申请读写相册权限基本申请不了,有没有其他办法能够完成需求?showAssetsCreationDialog可以保存图片和视频到相册,但是无法生成动态图保存到相册
HarmonyOS鸿蒙Next中用的flutter无法使用save_button,申请读写相册权限基本申请不了,有没有其他办法能够完成需求?showAssetsCreationDialog可以保存图片和视频到相册,但是无法生成动态图保存到相册 【问题描述】:用jpg和mp4生成动态图保存到相册. 由于用的flutter. 无法使用save_button. 申请读写相册权限基本申请不了. 有没有其他办法能够完成需求. showAssetsCreationDialog可以保存图片和视频到相册, 但是无法办法生成动态图保存到相册 有没有其他更好的方案来解决这个问题 (权限申请没有成功)
【问题现象】:13900012 without medialibrary permission
【版本信息】:IDE: DevEco Studio 6.0.0 Release. Flutter分支ohos版本: 3.22.1-ohos-1.0.4 手机系统: 鸿蒙next 5.1.0 api版本: 12
【尝试解决方案】:如下代码
async onMethodCall(call: MethodCall, result: MethodResult): Promise<void> {
if (call.method == "makeLive") {
const covertImgPath = call.argument("covertImgPath") as string;
const videoPath = call.argument("videoPath") as string;
const context = this.binding?.getAbility().context;
if (context == null) {
return result.error("-1", "context is null", null);
}
try {
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let srcFileUris: Array<string> = [fileUri.getUriFromPath(covertImgPath), fileUri.getUriFromPath(videoPath)];
let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [
{
fileNameExtension: "jpg",
photoType: photoAccessHelper.PhotoType.IMAGE,
subtype: photoAccessHelper.PhotoSubtype.MOVING_PHOTO
},
{
fileNameExtension: "mp4",
photoType: photoAccessHelper.PhotoType.VIDEO
}
];
let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);
let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoAccessHelper.PhotoType.IMAGE, "jpg", {
subtype: photoAccessHelper.PhotoSubtype.MOVING_PHOTO
});
assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, srcFileUris[0]);
assetChangeRequest.addResource(photoAccessHelper.ResourceType.VIDEO_RESOURCE, srcFileUris[1]);
await phAccessHelper.applyChanges(assetChangeRequest);
return result.success(assetChangeRequest.getAsset().uri)
} catch (err) {
result.success(`${err.code} ${err.message}`);
}
} else {
result.notImplemented();
}
}
更多关于HarmonyOS鸿蒙Next中用的flutter无法使用save_button,申请读写相册权限基本申请不了,有没有其他办法能够完成需求?showAssetsCreationDialog可以保存图片和视频到相册,但是无法生成动态图保存到相册的实战教程也可以访问 https://www.itying.com/category-92-b0.html
保存动图,你需要将 fileNameExtension,设置为对应的类型。
比如 fileNameExtension: ‘gif’ ,简单处理可以使用图片url上的扩展名。
如果是需要更精确的类型,可以读取图片的前几个字节来确定。
更多关于HarmonyOS鸿蒙Next中用的flutter无法使用save_button,申请读写相册权限基本申请不了,有没有其他办法能够完成需求?showAssetsCreationDialog可以保存图片和视频到相册,但是无法生成动态图保存到相册的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
现在权限申请已经被拒了 还有什么好的方案吗,
在HarmonyOS Next中,Flutter的save_button不可用且读写相册权限受限时,可考虑使用鸿蒙原生媒体库管理接口。通过@ohos.file.photoAccessHelper模块的PhotoAccessHelper功能,直接调用createAsset方法创建并保存动态图资源。该方法支持生成GIF等动态格式,无需依赖Flutter插件或额外权限申请。具体实现需在鸿蒙开发环境中配置相应依赖,并遵循鸿蒙API文档调用流程。


