手机无法保存PDFDocument问题求助(附代码)
手机端PDF保存失败排查与修复
核心问题与解决方案
- 路径拼接错误:你代码里第二个参数开头多了个
/,Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)返回的路径本身就以/结尾,拼接后会出现//这种无效路径,直接导致文件创建失败。
修正后的代码:File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), nameGet1 + "-" + idGet1 + ".pdf"); - 权限问题:
- Android 6.0(API 23)及以上,需要动态申请
WRITE_EXTERNAL_STORAGE权限(适配旧存储模型); - Android 10(API 29)及以上,推荐使用媒体存储API或者将文件存到应用私有目录(无需权限),如果非要存公共Downloads目录,需要在
AndroidManifest.xml中添加android:requestLegacyExternalStorage="true"(仅适配到Android 10),Android 11及以上则需申请MANAGE_EXTERNAL_STORAGE权限(不推荐,除非必要)。
- Android 6.0(API 23)及以上,需要动态申请
- 目录存在性校验:虽然Downloads目录通常存在,但极端情况下可能被删除,建议先校验并创建:
File downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); if (!downloadsDir.exists() && !downloadsDir.mkdirs()) { // 处理目录创建失败的情况 return; } File file = new File(downloadsDir, nameGet1 + "-" + idGet1 + ".pdf"); - 文件名合法性:检查
nameGet1和idGet1是否包含文件系统禁止的字符,比如/ \ : * ? " < > |等,如有需要先过滤这些字符。
内容的提问来源于stack exchange,提问作者Maklonim
相关产品推荐
相关产品推荐

