HarmonyOS 鸿蒙Next 使用sharekit分享图片至图库问题 使用了sharekit,想将图片分享出去,看到弹窗里有保存至图库的按钮,点了提示成功但是图库里并没有。我是先将图片下载至沙盒,再分享,是路径哪里不对吗;或者说有不下载直接可以保存至图库的方式吗
HarmonyOS 鸿蒙Next 使用sharekit分享图片至图库问题
使用了sharekit,想将图片分享出去,看到弹窗里有保存至图库的按钮,点了提示成功但是图库里并没有。我是先将图片下载至沙盒,再分享,是路径哪里不对吗;或者说有不下载直接可以保存至图库的方式吗
保存网络图片到图库,可以用HTTP下载然后保存。
以下是参考demo:
import { http } from '[@kit](/user/kit).NetworkKit'
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
import ResponseCode from '[@ohos](/user/ohos).net.http';
import { photoAccessHelper } from '[@kit](/user/kit).MediaLibraryKit';
import fs from '[@ohos](/user/ohos).file.fs';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
loadImageWithUrl(url: string) {
// 使用request下载图片并在回调函数中保存图片到相册
http.createHttp().request(url,
{
method:http.RequestMethod.GET,
connectTimeout:60000,
readTimeout:60000
},
async (error: BusinessError, data: http.HttpResponse) => {
if (error) {
console.error(`http reqeust failed with. Code: ${error.code}, message: ${error.message}`);
} else {
if (ResponseCode.ResponseCode.OK === data.responseCode) {
let imageBuffer: ArrayBuffer = data.result as ArrayBuffer;
try {
// 获取相册路径
const context = getContext(this);
let helper = photoAccessHelper.getPhotoAccessHelper(context);
let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg')
let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 写入文件
await fs.write(file.fd, imageBuffer);
// 关闭文件
await fs.close(file.fd);
} catch (error) {
console.error("error is "+ JSON.stringify(error))
}
} else {
console.error("error occurred when image downloaded!")
}
}
})
}
}
更多关于HarmonyOS 鸿蒙Next 使用sharekit分享图片至图库问题 使用了sharekit,想将图片分享出去,看到弹窗里有保存至图库的按钮,点了提示成功但是图库里并没有。我是先将图片下载至沙盒,再分享,是路径哪里不对吗;或者说有不下载直接可以保存至图库的方式吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
不太确定你sharekit的问题。但SaveButton也可以直接保存图片到相册,参考文档:
在使用HarmonyOS鸿蒙Next系统的sharekit进行图片分享至图库时,若遇到图片提示保存成功但实际未在图库中显示的问题,这通常与图片保存路径或权限设置有关。
首先,确认图片是否确实已正确下载至沙盒。检查下载路径是否正确,并确保文件完整性。若路径错误或文件损坏,将导致图库无法识别并显示。
其次,关于不下载直接保存至图库的方式,HarmonyOS提供了直接访问和操作媒体库的能力。你可以使用MediaStore API或相应的鸿蒙系统API来直接添加图片到图库,而无需先下载到沙盒。这样可以避免路径问题,并简化流程。
请确保你的应用已正确声明并获取了访问图库的权限。在鸿蒙系统中,这通常需要在manifest文件中配置相应的权限声明,并在运行时请求用户授权。
如果以上方法仍未解决问题,可能是系统或sharekit的特定版本问题。此时,建议检查是否有相关的系统更新或sharekit库的更新,并尝试应用这些更新。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html