You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将App生成存储在本地的PDF文件直接发送到指定WhatsApp号码

安卓端向指定WhatsApp号码发送PDF文件解决方案

你当前使用的http://api.whatsapp.com/send链接仅支持传递文本内容,不支持附件参数,所以携带的attachment字段会被WhatsApp直接忽略,无法实现PDF发送,可按照以下方案实现需求:


前置配置:配置FileProvider(安卓7.0及以上必须)

安卓7.0之后禁止直接向第三方应用传递file://类型的Uri,需要通过FileProvider生成授权的content://类型Uri:

  1. 在AndroidManifest.xml的<application>标签内添加Provider配置:
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 在res/xml目录下新建file_paths.xml文件,配置PDF文件的存储路径:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 对应App内部files目录,根据你的PDF实际存储路径调整 -->
    <files-path name="pdfs" path="pdf/" />
    <!-- 如果PDF存在外部存储,可添加external-files-path等节点 -->
</paths>

核心发送代码

// 1. 处理目标号码:需带国家码,去掉所有特殊符号
String formattedNumber = PhoneNumberUtils.stripSeparators(toNumber);
// 2. 生成PDF对应的授权Uri
File pdfFile = new File(filepath);
Uri pdfUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", pdfFile);
// 3. 构造分享Intent
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("application/pdf");
// 指定WhatsApp包名,直接跳转到WhatsApp
intent.setPackage("com.whatsapp");
// 指定接收号码,jid格式为 号码@s.whatsapp.net
intent.putExtra("jid", formattedNumber + "@s.whatsapp.net");
// 传入PDF文件Uri
intent.putExtra(Intent.EXTRA_STREAM, pdfUri);
// 给WhatsApp授予文件读取权限
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// 可选:附带发送的文本内容
// intent.putExtra(Intent.EXTRA_TEXT, "这是你要的PDF文件");
// 4. 启动Intent,建议先判断是否安装了WhatsApp,避免崩溃
if (intent.resolveActivity(context.getPackageManager()) != null) {
    startActivity(intent);
} else {
    // 提示用户未安装WhatsApp
}

注意事项

  • 目标号码必须是已注册WhatsApp的有效号码,格式为「国家码+手机号」,不能带+、空格、横杠等符号
  • 确保PDF文件已经生成完成、路径正确,FileProvider的路径配置覆盖了PDF的存储目录
  • 如果需要发送给WhatsApp Business用户,将Intent的包名改为com.whatsapp.w4b即可

内容的提问来源于stack exchange,提问作者Pioneer Infoworld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:39:04