系统分享支持将网络图片url直接以图片形式分享吗 ? 应该怎么实现?
我的思路是通过http请求图片,获得ArrayBuffer数据,然后将数据保存到文件,再使用系统分享,但提示图片不存在。
是哪个环节逻辑不太对。
copyImgToFile(buffer: ArrayBuffer, saveComplete?: (filePath: string) => void){
const dateStr = (new Date().getTime()).toString();
let filePath = getContext().filesDir + `/${dateStr}.jpg`;
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.write(file.fd, buffer).then((result) => {
if (saveComplete) {
saveComplete(filePath);
}
}).finally(()=>{
fs.close(file);
})
}
shareImgWithPackFile(text:string, url:string){
HttpImageUtils.httpImage(url, (arrayBuffer:ArrayBuffer)=>{
ImageCopy.copyImgToFile(arrayBuffer, (filePath:string)=>{
try {
let shareData: systemShare.SharedData =
new systemShare.SharedData({
utd: utd.UniformDataType.IMAGE,
uri:filePath
});
let shareController: systemShare.ShareController = new systemShare.ShareController(shareData);
shareController.on('dismiss', () => {
console.info(Constants.logTag, 'share dismiss');
})
let context: common.UIAbilityContext = getContext() as common.UIAbilityContext;
shareController.show(context, {
previewMode: systemShare.SharePreviewMode.DETAIL,
selectionMode: systemShare.SelectionMode.SINGLE
})
} catch (e) {
console.error(Constants.logTag, JSON.stringify(e))
}
})
})
}
目前不支持url图片分享,可先将图片保存至本地,再通过share kit进行分享:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/share-mobilephone-app-share-V5
以下是保存至相册的demo