Java 通过android版本的兼容性下载PDF
在接下来的几个月里,如果你想发布的话,必须发布30个Android目标SDK,所以我升级了用Java编写的Android项目,但是我在从url保存PDF时遇到了一个问题。 我以前保存PDF的方法在使用中:Java 通过android版本的兼容性下载PDF,java,android,pdf,Java,Android,Pdf,在接下来的几个月里,如果你想发布的话,必须发布30个Android目标SDK,所以我升级了用Java编写的Android项目,但是我在从url保存PDF时遇到了一个问题。 我以前保存PDF的方法在使用中: SystemUtils.saveFile(pdfAsBytes,path.toString(),fileName+“+”+this.fileType) 为了使它工作,即使设备没有sd卡,我正在使用 android:requestLegacyExternalStorage=“true” 但是现在
SystemUtils.saveFile(pdfAsBytes,path.toString(),fileName+“+”+this.fileType)代码>
为了使它工作,即使设备没有sd卡,我正在使用
android:requestLegacyExternalStorage=“true”
但是现在,如果我被迫使用SKD=30,android:requestLegacyExternalStorage设置为false,那么,如何调整应用程序以管理从minSdkVersion 19到targetSdkVersion 30的PDF下载,包括没有SD卡的设备??我设法下载PDF如果版本>=Q,但如何处理安卓6,7,8,9。。。对于我的应用程序,设置用户权限android.permission.MANAGE_EXTERNAL_STORAGE的方法无效,已被拒绝,因为它不是核心应用程序。对于许多应用程序来说,理想的解决方案是使用上下文中的方法来存储内容:
- 对于用户不需要独立访问的内容,请使用
getFilesDir()
或getCacheDir()
- 对于用户可能需要通过USB电缆访问的内容,请使用
getExternalFilesDir()
或getExternalCacheDir()
- 对于用户可能希望在可移动存储上使用的内容,请使用诸如
getExternalFilesDirs()
(注意复数形式)
您在这些目录中拥有完整的文件系统访问权限,不需要为它们请求任何运行时权限
如果您希望能够写入共享的公共位置,您可以选择:
- 对于媒体,请使用
MediaStore
- 使用存储访问框架,如
操作_创建_文档
,允许用户决定在用户设备(或用户云存储)上放置内容的位置
将文件保存到可以写入的文件系统位置,例如上下文上的getExternalFilesDir()
。或者,使用存储访问框架和ACTION\u CREATE\u DOCUMENT
让用户决定在用户设备上(或在用户的云存储中)保存用户内容的位置。非常感谢@commonware我尝试了getExternalFilesDir(),现在正在为所有android版本工作。