如何从其他应用跳转WhatsApp时发送PDF/图片文件而非文本
WhatsApp跳转发送PDF/图片实现方案
核心限制说明
你当前使用的whatsapp://send?text=自定义跳转协议,仅支持传递URL编码后的纯文本内容,直接在text参数里填ABC.pdf、image.png这类文件名,只会把文件名作为普通字符串发送,完全不会识别为待发送的文件。
分场景实现方式
场景1:H5网页通过a标签跳转分享(你当前的使用场景)
这种场景下无法直接发送本地存储的文件,必须按以下规则调整:
- 先将要分享的PDF、图片上传到公网可直接访问的服务器,获取文件的HTTPS直链(HTTP链接会被WhatsApp拦截,链接不能有登录校验、权限校验,否则WhatsApp无法抓取资源)
- 放弃自定义协议,改用WhatsApp官方提供的web分享接口,将文件直链编码后放到text参数中,WhatsApp会自动识别链接对应的媒体/文件资源,生成带预览的待发送附件,代码示例:
<!-- 分享PDF --> <a href="https://api.whatsapp.com/send?text=%E6%88%91%E5%88%86%E4%BA%AB%E7%9A%84PDF%E6%96%87%E4%BB%B6%0Ahttps%3A%2F%2Fyour-domain.com%2FABC.pdf" target="_blank">分享PDF到WhatsApp</a> <!-- 分享图片 --> <a href="https://api.whatsapp.com/send?text=%E6%88%91%E5%88%86%E4%BA%AB%E7%9A%84%E5%9B%BE%E7%89%87%0Ahttps%3A%2F%2Fyour-domain.com%2Fimage.png" target="_blank">分享图片到WhatsApp</a>
代码里的%0A是URL编码后的换行符,用来把说明文字和文件链接分开,你可以替换成自己需要的提示文本。
场景2:原生App内调起WhatsApp发送本地文件
如果是你自己开发的Android/iOS原生应用,要发送App本地存储的PDF/图片,不能靠简单的URL scheme跳转,需要调用系统原生分享能力传文件:
- Android端通过Intent实现,核心代码如下:
Intent sendIntent = new Intent(Intent.ACTION_SEND); // 发PDF填application/pdf,发png图片填image/png,按实际文件类型设置MIME sendIntent.setType("application/pdf"); sendIntent.setPackage("com.whatsapp"); // 传入本地文件的content格式Uri,注意需要给WhatsApp授予该文件的临时访问权限 sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri); startActivity(sendIntent);
- iOS端通过
UIActivityViewController传入待发送的图片/PDF的NSData对象,调起系统分享面板后选择WhatsApp即可完成发送。
注意事项
不存在直接通过
whatsapp://协议传本地文件名、本地文件路径就能发送文件的方案。出于安全限制,WhatsApp不会读取跳转参数里传入的本地路径,所有这类写法最终都只会发送纯文本。
内容的提问来源于stack exchange,提问作者Mushtaq Ahmad
相关产品推荐
相关产品推荐

