私のAndroid Appでは、このアクティビティの1つに「PDFダウンロード」ボタンがあります。このボタンをクリックすると、PDFを作成して「ダウンロード」ディレクトリにダウンロードします。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();
}
}
は私がMANIFESTファイルに必要な書き込み権限を追加しても、実行時に許可を求めることに注意してください:以下のは、ボタンのクリックイベントで実行されます私のコードです。したがって、権限の問題はありません。私はコードをデバッグするとき
は、私が「outputFile
」変数はこのパスを保持していることに気づく:
/storage/emulated/o/Download/pdfdemo07052017121233.pdf
私のユーザーが自分の携帯で上記のパスを見つけることはありません。だから、PDFがどこに保存されたのか分かりません。ユーザーがモバイル上で「ダウンロード」アイコンをクリックすると、アプリからダウンロードしたPDFファイルが表示されます。
だから、私は次の行を整理できるかどうかだと思う:
File outputFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), pdfName);
を私の仕事が行われます。私のPDFファイルが "ダウンロード"ディレクトリに保存/ダウンロードされるように私が使用するパスは何でしょうか?私はインターネットで調査しましたが、具体的な解決策は見つかりませんでした。
あなたが使用するフォルダは正しいフォルダです。しかし、あなたのユーザーがあなたのファイルを正しいフォルダに見ない理由は、ダウンロードアプリがそのフォルダ内をファイルだけで探すのではないということです。おそらくMediaStoreにファイルを問い合わせます。デバイスをオフ/オンに切り替えた後、ユーザーにファイルが表示されますか? – greenapps
残りについては、自分自身を公開のダウンロードフォルダに入れておくことは悪い考えです。それはisntで始まるようにダウンロードされていませんか? – greenapps
'createAndDownloadPDF()'?間違った関数名。あなたはダウンロードしていませんか? – greenapps