在我的Android應用程序中,在其中一項活動中,有一個「PDF下載」按鈕。點擊此按鈕後,我創建一個PDF,然後將其下載到「Downloads」目錄。以下是我的代碼運行在按鈕的單擊事件:Android:創建並下載PDF文件到下載目錄
public void createAndDownloadPDF()
{
try
{
PdfDocument document = new PdfDocument();
View content = this.findViewById(android.R.id.content);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(content.getWidth(),
content.getHeight() - 20, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
content.draw(page.getCanvas());
document.finishPage(page);
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyhhmmss");
String pdfName = "pdfdemo"
+ sdf.format(Calendar.getInstance().getTime()) + ".pdf";
File outputFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), pdfName);
try
{
outputFile.createNewFile();
OutputStream out = new FileOutputStream(outputFile);
document.writeTo(out);
document.close();
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
catch(Exception e)
{
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
請注意,我添加了必需的寫權限清單文件還要求在運行時的權限。所以,沒有權限問題。
當我調試的代碼,我注意到,「outputFile
」變量中保存此路徑:
/storage/emulated/o/Download/pdfdemo07052017121233.pdf
我的用戶永遠不會發現他們的移動上面的路徑。所以,他們不知道他們的PDF保存在哪裏。我希望當用戶點擊移動設備上的「下載」圖標時,他們應該看到他們從應用程序下載的PDF文件。
所以,我想如果我能整理出以下行:
File outputFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), pdfName);
我的工作將完成。我應該使用什麼路徑才能將我的PDF文件保存/下載到「Downloads」目錄中?我研究了互聯網,但沒有找到具體的解決方案。
那麼你使用的文件夾是正確的文件夾。但是,您的用戶沒有在正確的文件夾中看到您的文件的原因是,下載應用程序不只是在文件夾中查找文件。可能它會向MediaStore查詢文件。用戶在關閉/打開設備後是否看到您的文件? – greenapps
對於其餘的我認爲把你自己創建的文件放到公共下載文件夾中是一個壞主意。它不是下載開始是不是? – greenapps
'createAndDownloadPDF()'?錯誤的函數名稱。你不是在下載嗎? – greenapps