2017-05-07 17 views
1

私の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ファイルが "ダウンロード"ディレクトリに保存/ダウンロードされるように私が使用するパスは何でしょうか?私はインターネットで調査しましたが、具体的な解決策は見つかりませんでした。

+0

あなたが使用するフォルダは正しいフォルダです。しかし、あなたのユーザーがあなたのファイルを正しいフォルダに見ない理由は、ダウンロードアプリがそのフォルダ内をファイルだけで探すのではないということです。おそらくMediaStoreにファイルを問い合わせます。デバイスをオフ/オンに切り替えた後、ユーザーにファイルが表示されますか? – greenapps

+0

残りについては、自分自身を公開のダウンロードフォルダに入れておくことは悪い考えです。それはisntで始まるようにダウンロードされていませんか? – greenapps

+0

'createAndDownloadPDF()'?間違った関数名。あなたはダウンロードしていませんか? – greenapps

答えて

0

これを試してみてください:

File outDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()); 

これが動作しない場合

は、以前に生成され、あなたの資産フォルダ内のフォルダに保存したPDFファイルを持つ可能性を評価します。このような場合することができた場合は、上記の行の後には、これを挿入します。

「XXX」は、PDFファイルが含まれていますあなたの資産フォルダ内のフォルダの名前です
copyAssets("XXX",outDir.toString()); 

。これにより、XXXのコンテンツが端末のDOWNLOADS/XXXにコピーされます。

+0

同じパスを取得しています。無効。 – Meraqp

+0

私の構文 'File outDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString());'はフォルダーを作成することです。あなたはほぼ同じものを使ってファイルを作成しようとしています。 – statosdotcom

関連する問題