关于在Android应用程序中打开.PDF(本地存储)

时间:2012-03-24 12:41:36

标签: android string file pdf uri

所以我在我的应用程序中有这些按钮,我想在应用程序中打开.PDF文件。

我已将文件存储在/ res / raw目录中。我们称它们为file1.PDF,file2.PDF等。

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.file1:
    Log.i(TAG, "Button one pressed");
    openPDF(Uri.parse("android:resource://test.pdf.files/raw/res/file1.PDF"));
        break;
}}

以上是我的onClick代码。下面是openPDF函数的代码。

public void openPDF(Uri url)
{
    File file = new File(url.toString());
    Log.i(TAG, url.toString());
    if (file.exists())
    { 
        Log.i(TAG, "File exists"); 
        Intent intent = new Intent();
         intent.setAction(android.content.Intent.ACTION_VIEW);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setDataAndType(Uri.fromFile(file), "application/pdf");
         try
         {
              getApplicationContext().startActivity(intent); 
         }
         catch (ActivityNotFoundException e) 
         {
             Log.e(TAG,"Activity not found exception");
         }
    }else{
        Log.i(TAG,"404: File not found!");
    }
}

我的问题如下,我永远无法通过if(file.exists())检查。我已经尝试使文件文件同时采用Uri,URI和String,我也尝试过或多或少的文件路径变体,例如“res / raw / file1.PDF”,“raw / file.PDF”,“test .pdf.files /生/ RES / file1.PDF”。但在任何这些情况下我都找不到我要打开的文件,有人能看出为什么这不起作用?

我一直试图解决这个问题几个小时而且我似乎无法绕过它。

1 个答案:

答案 0 :(得分:0)

  

我永远无法通过if(file.exists())检查

当然。您的Uri未指向文件。您的Uri指向资源。资源不是文件。文件不是资源。

您可以使用startActivity()使用您的资源Intent来尝试Uri。如果您发现PDF查看器拒绝使用Uri,则需要资源复制到本地世界可读文件(例如,在外部存储上)并使用该副本Uri.fromFile()启动您的PDF查看器。