Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过android版本的兼容性下载PDF_Java_Android_Pdf - Fatal编程技术网

Java 通过android版本的兼容性下载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” 但是现在

在接下来的几个月里,如果你想发布的话,必须发布30个Android目标SDK,所以我升级了用Java编写的Android项目,但是我在从url保存PDF时遇到了一个问题。 我以前保存PDF的方法在使用中:

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版本工作。