HarmonyOS 鸿蒙Next中微信分享base64图片报错Internal error.

HarmonyOS 鸿蒙Next中微信分享base64图片报错Internal error.

根据微信开发者平台分享功能/鸿蒙开发手册

集成的微信分享,可以正常分享网络图片和网页,但是在使用了开发手册中分享base64图片的代码时,报

openWeChatWithLink fail by err:Internal error.

分享代码如下

public static shareBase64ImageToWX(imageBase64: string) {
  if (imageBase64) {
    if (imageBase64.indexOf(',')) {
      imageBase64 = imageBase64.split(',')[1];
    }
  }

  let imageObject = new wxopensdk.WXImageObject
  let buf: buffer.Buffer = buffer.from(imageBase64);
  imageObject.imageData = buf.toString('base64', 0, buf.length);

  let mediaMessage = new wxopensdk.WXMediaMessage()
  mediaMessage.mediaObject = imageObject

  let req = new wxopensdk.SendMessageToWXReq()
  req.scene = wxopensdk.SendMessageToWXReq.WXSceneSession
  req.message = mediaMessage

  WXApi.sendReq(getContext() as common.UIAbilityContext, req)
}

报错的微信sdk代码如下:WXAPIFactory.ets :

private openWeChatWithLink(context: common.UIAbilityContext, req?: BaseReq): SendReqResultWrap {
  return new Promise<SendReqResult>(async (resolve) => {
    const linkOptions: OpenLinkOptions = {
      appLinkingOnly: false,
      parameters: this.makeParameters(req)
    }
    try {
      await context.openLink(kWechatLink, linkOptions, (err, abilityResult) => {
        if (err && err.code != 0) {
          Log.e(kTag, `openWeChatWithLink result err: ${err.message}`)
          return
        }
        this.handleResult(abilityResult)
      })
      resolve(true)
    } catch (e) {
      Log.e(kTag, `openWeChatWithLink fail by err: ${e.message}`)
      resolve(false)
    }
  })
}

有遇到过这个问题的吗?要怎么解决?


更多关于HarmonyOS 鸿蒙Next中微信分享base64图片报错Internal error.的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更多关于HarmonyOS 鸿蒙Next中微信分享base64图片报错Internal error.的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我做了链接里的压缩操作,还是不行,

在HarmonyOS鸿蒙Next中,微信分享base64图片报错“Internal error”可能是由于鸿蒙系统与微信SDK在base64图片处理上的兼容性问题。鸿蒙Next的底层架构与Android不同,可能导致微信SDK在处理base64图片时出现异常。建议检查鸿蒙Next的API文档,确认base64图片的编码格式是否符合系统要求,并确保微信SDK版本与鸿蒙Next兼容。

在HarmonyOS Next中分享base64图片到微信报错"Internal error"的问题,通常与图片数据处理或参数传递有关。以下是关键排查点:

  1. Base64数据处理问题:
  • 确保传入的base64字符串是有效的图片数据(去掉可能存在的data:image前缀)
  • 检查base64字符串是否包含非法字符或格式错误
  1. 图片大小限制:
  • 微信分享对图片大小有限制(通常不超过32KB)
  • 建议先压缩图片再转为base64
  1. 代码修正建议:
// 修正base64处理逻辑
if (imageBase64.includes(',')) {
  imageBase64 = imageBase64.split(',')[1];
}

// 确保使用正确的buffer处理方式
let buf = buffer.from(imageBase64, 'base64'); 
imageObject.imageData = buf;
  1. 其他可能原因:
  • 微信SDK版本兼容性问题
  • 鸿蒙权限配置不全(需确保已申请必要的文件读写权限)
  • 微信客户端版本过低

建议先通过日志打印确认base64数据是否正确,并尝试缩小图片尺寸测试。

回到顶部