2016-11-25 8 views
0

ダウンロードマネージャを練習していて、いくつかのプログラムを試していました。 最初のボタンは、上記のPdfを自分の電話機のある場所にダウンロードします。 2番目のボタンは、WP ReaderなどのユーザーがインストールしたPdfリーダーを使用してPdfファイルを開くことになっています。 ダウンロードは正常ですが、pdfを開くと無効な形式と表示されます。 サンプルPdfをGoogleドライブにアップロードしました。アップロードされたファイルがいずれの場合でも壊れていないことがわかりました。ファイルがサーバーからダウンロードされているときにいくつか問題があります。間違いを見つけるのを助けてください。そして、私は比較的新しいAndroidです。内部ストレージからPDFを読み込むエラー無効な形式

ダウンロードボタンは、loadPdfがxmlファイルで指定されているときにOnclicklistenerを使用します。android:onClick = "downloadPdf"

public class MainActivity extends AppCompatActivity { 

String myHTTPUrl = "https://drive.google.com/open?id=0B5Pev9zz5bVjZTFFZ1dLZVp1WVU"; 
String TAG = "My app"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button download = (Button) findViewById(R.id.download); 


    download.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Log.v(TAG,"download method called"); 
      downloadPdf(); 

      Toast.makeText(MainActivity.this,"Listener Called",Toast.LENGTH_SHORT).show(); 
      Log.v(TAG,"On Click Listener Called"); 

     } 
    }); 

} 


public void loadPdf(View view) { 

    Log.v(TAG,"Pdf load called"); 

    File pdfFile = new File(Environment.getExternalStorageDirectory()+"/notes","ssp.pdf"); 
    if(pdfFile.exists()) 
    { 
     Uri path = Uri.fromFile(pdfFile); 
     Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
     pdfIntent.setDataAndType(path, "application/pdf"); 
     pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     Intent intent = Intent.createChooser(pdfIntent, "Open File"); 
     try 
     { 
      startActivity(intent); 
     } 
     catch(ActivityNotFoundException e) 
     { 
      Toast.makeText(MainActivity.this, "No Application available to view pdf", Toast.LENGTH_LONG).show(); 
     } 
    } 
    else 
    { 
     Toast.makeText(MainActivity.this,"Pdf not found",Toast.LENGTH_SHORT).show(); 
    } 


} 

public void downloadPdf() 
{ 
    DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myHTTPUrl)); 
    request.setTitle("Solid State Physics"); 
    request.setDescription("File is being Downloaded..."); 
    request.allowScanningByMediaScanner(); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    request.setDestinationInExternalPublicDir("/notes","ssp.pdf"); 
    manager.enqueue(request); 

}} 

EDITED:ファイル形式エラー、 Screenshot of the errorを開くことができません: これは私がスクリーンショット エラーで直面しています正確なエラーがあります。

答えて

0

PDFをダウンロードしていないので、ウェブページをダウンロードしてPDFの内容を表示しています。 PDFファイルを直接ダウンロードする場合は、次のURLを使用してください。

String myHTTPUrl = "https://drive.google.com/uc?export=download&id=0B5Pev9zz5bVjZTFFZ1dLZVp1WVU"; 

あなたのアプリケーションは動作するはずです。

(そうDownloadManagernotes/ssp-1.pdfのように、別の名前でファイルをダウンロードしますが、最初の無効notes/ssp.pdfファイルを削除することを忘れないでください。)

関連する問題