在我的Android应用程序中,在其中一个活动中,有一个" PDF下载"按钮。单击此按钮时,我创建一个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();
}
}
请注意,我向MANIFEST文件添加了所需的WRITE权限,并在运行时请求权限。所以,没有权限问题。
当我调试代码时,我注意到" outputFile
"变量保持这条路径:
/storage/emulated/o/Download/pdfdemo07052017121233.pdf
我的用户永远不会在他们的手机中找到上述路径。因此,他们将不知道他们的PDF保存在哪里。当用户点击"下载"他们的手机上的图标,他们应该看到他们从应用程序下载的PDF文件。
所以,我想如果我可以理清以下几行:
File outputFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), pdfName);
我的工作将完成。我应该使用的路径是什么,以便我的PDF文件保存/下载到"下载"目录?我在互联网上进行了研究,但没有找到任何具体的解决方案。
答案 0 :(得分:1)
试试这个:
File outDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString());
如果这不起作用,请评估以前生成PDF文件并将其保存到Assets文件夹内的文件夹的可能性。如果是这种情况,请在上面的行之后插入:
copyAssets("XXX",outDir.toString());
在哪里" XXX"是Assets文件夹中包含PDF文件的文件夹的名称。这会将XXX的内容复制到您设备上的DOWNLOADS/XXX
。