如何解决如何将pdf文件存储在下载文件夹中
我制作了一个应用程序,可以通过相机捕获图像并将其转换为 pdf 文件。现在的问题是,根据 android 11 中的最新存储更新,pdf 已存储在我的应用程序数据中,我们无法在应用程序数据之外创建新文件夹。所以现在我想将我的 pdf 文件存储到共享存储下的下载文件夹中,这样如果我卸载应用程序就不会删除它。这是我将 pdf 文件存储在应用程序数据中的代码:
private fun CreatePdf(list: ArrayList<Bitmap>){
val file: File?=getOutputFile()
if (file != null) {
try {
val fileOutputStream = FileOutputStream(file)
val document = PDDocument()
for(i in 0 until list.size) {
val page = PDPage(A4)
document.addPage(page)
val contentStream = PDPageContentStream(document,page)
val ximage = JPEGFactory.createFromImage(document,list[i],1f)
contentStream.drawImage(ximage,0f,0f)
contentStream.close()
}
document.save(fileOutputStream)
document.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
private fun getOutputFile(): File?{
val root: File = File(getExternalFilesDir(null),"my file")
var isFolderCreated = true
if (!root.exists()) {
isFolderCreated = root.mkdir()
}
return if (isFolderCreated) {
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss",Locale.US).format(Date())
val imageFileName = "PDF_$timeStamp"
File(root,"$imageFileName.pdf")
} else {
Toast.makeText(this,"Folder is not created",Toast.LENGTH_SHORT).show()
null
}
}
解决方法
试试这个
var relativePath = Environment.DIRECTORY_DOWNLOADS
if (hasSubFolder) {
relativePath += File.separator + yourSubFolderName
}
val fileName: String = yourFileName
val values = ContentValues()
values.put(MediaStore.MediaColumns.DISPLAY_NAME,fileName)
values.put(MediaStore.MediaColumns.RELATIVE_PATH,relativePath)
val cr = context.contentResolver
val uri = cr.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI,values)
uri?.let {
val outputStream = cr.openOutputStream(uri)
document.save(outputStream)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。