HarmonyOS鸿蒙Next中微信分享网络图片异常
HarmonyOS鸿蒙Next中微信分享网络图片异常 开发的App 有个微信分享功能。需求是向微信好友分享某个小程序,分享过程报错:
[wxopensdk::WXApi] openWechatWithWant fail by err: Internal error.
Failed to ensure parcel capacity, newCapacity = 204800, dataCapacity_ = 2048, minNewCapacity = 259504
应该是参数出现了异常。猜测是封面图片参数出现异常。下面是获取图片封面的代码:
//图片下载
static download(url?: string): Promise<ArrayBuffer> {
return new Promise<ArrayBuffer>((resolve, reject) => {
const request = http.createHttp()
request.request(url).then((response: http.HttpResponse) => {
if (response.responseCode === http.ResponseCode.OK) {
if (response.result instanceof ArrayBuffer) {
const imageData: ArrayBuffer = response.result
console.error(TAG, 'iamgeData = ' + imageData)
resolve(imageData)
}
} else {
reject()
}
request.destroy()
})
})
}
将download()
返回的ArrayBuffer
对象转换成Uint8Array
const thumbImage = new Uint8Array(imageData)
分享小程序的函数:
shareMiniPro(
context: common.UIAbilityContext,
miniProId: string,
path: string,
title: string,
description: string,
thumbImage: Uint8Array
) {
const miniProObj = new WXMiniProgramObject()
miniProObj.userName = miniProId
miniProObj.path = path
miniProObj.miniprogramType = WXMiniProgramType.RELEASE
const mediaMsg = new WXMediaMessage()
mediaMsg.title = title
mediaMsg.description = description
//将Uint8Array 对象传给thumbData参数
mediaMsg.thumbData = thumbImage
mediaMsg.mediaObject = miniProObj
const req = new SendMessageToWXReq()
req.message = mediaMsg
req.scene = SendMessageToWXReq.WXSceneSession
req.callbackAbility = 'EntryAbility'
WXApi.sendReq(context, req)
}
请教各位大神帮忙分析下
更多关于HarmonyOS鸿蒙Next中微信分享网络图片异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
通过日志分析发现是图片的大小超过的限制(允许的大小是204800,图片的大小是259504)导致的异常,需要对网络下载下来的图片进行压缩再进行使用,压缩方法为:
const thumbPixel = image.createImageSource(imageData).createPixelMapSync()
const thumbBuffer = await image.createImagePacker().packToData(thumbPixel, { format: "image/png", quality: 85 })
mediaMessage.thumbData = new Uint8Array(thumbBuffer)
更多关于HarmonyOS鸿蒙Next中微信分享网络图片异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
微信分享不支持太大的图片,需要使用packToData进行图片压缩一下
在HarmonyOS鸿蒙Next中,微信分享网络图片异常可能涉及多个方面。首先,鸿蒙系统采用分布式架构,微信在分享网络图片时可能需要调用系统的网络请求、图片加载和分享接口。如果这些接口在鸿蒙Next版本中存在兼容性问题,可能导致分享失败或异常。其次,微信应用本身可能未完全适配鸿蒙Next的API或系统机制,导致网络图片在加载、解析或分享过程中出现错误。此外,系统权限管理、网络配置或图片格式支持也可能影响分享功能。最后,鸿蒙Next的沙盒机制可能限制了微信对网络图片的访问或处理。具体问题需结合日志和调试信息进一步分析。
在HarmonyOS鸿蒙Next中,微信分享网络图片异常可能是由于以下原因:
- 权限问题:确保微信已获取必要的存储和网络权限。
- 网络问题:检查网络连接是否稳定,尝试切换网络。
- 图片格式或大小:确保图片格式为常见类型(如JPEG、PNG),且大小适中。
- 微信版本:更新微信至最新版本,确保兼容性。
- 系统兼容性:鸿蒙Next可能在某些功能上与微信不完全兼容,等待官方更新。
如果问题持续,建议反馈给微信或华为官方技术支持。