2016-11-25 88 views
0

所以我一直在练习下载管理器,我正在尝试一些程序。 第一个按钮会将所述Pdf下载到手机中的某个位置。 第二个按钮应该打开用户安装的PDF阅读器,如WP阅读器等PDF文件的PDF文件。 下载工作正常,但是当我打开PDF时,它说无效的格式。 我上传了一个样本Pdf到谷歌驱动器,所以我知道上传的文件在任何情况下都没有损坏。当从服务器下载文件时,会有一些问题。请帮我找到错误。我对Android比较陌生。从内部存储器加载PDF错误无效格式

下载按钮使用Onclicklistener,而loadPdf在xml文件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); 

}} 

编辑: 这是我面临的截图 错误确切的错误:文件格式错误,不能将其打开 Screenshot of the error

回答

0

您未下载PDF,您正在下载显示PDF内容的网页。如果要直接下载PDF文件,请使用以下URL:

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

并且您的应用程序应该可以正常工作。

(不要忘记先删除无效notes/ssp.pdf文件,否则将DownloadManager下载的文件以不同的名称,如notes/ssp-1.pdf)。

相关问题