[英]How to store a pdf file in downloads folder
我制作了一個應用程序,它通過相機捕獲圖像並將它們轉換為 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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.