2011-10-25 308 views
1

我需要从我的Android应用程序打开PDF文件。我将pdf保存在应用程序包文件夹(/data/data/com.app.example/files)中。我已经在Android模拟器中安装了Adobe Reader应用程序。问题是,当我尝试用Adobe Reader打开PDF文件时,模拟器向我显示下一条消息:无效的文件路径。在Android中打开PDF的问题:无效的文件路径

我不知道为什么会发生这种情况,但我坚持这一点。该文件被正确保存,因为我可以在我的电脑中打开它。

下面是代码:

HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(url); 
     try { 
      HttpResponse response = client.execute(request); 
      request(response, file_name); 

      File file = new File("data/data/com.app.example/files/"+file_name); 

      PackageManager packageManager = getPackageManager(); 
      Intent testIntent = new Intent(Intent.ACTION_VIEW); 
      testIntent.setType("application/pdf"); 
      List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); 
      if(file.exists()) 
      { 
        if (list.size() > 0 && file.isFile()) { 
         Intent intent = new Intent(); 
         intent.setAction(Intent.ACTION_VIEW); 
         Uri uri = Uri.fromFile(file); 
         intent.setDataAndType(uri, "application/pdf"); 
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  

         startActivity(intent); 
        }else 
        { 
         System.out.println("NO APPs TO OPEN PDFs."); 
        } 
      } 
      else 
      { 
        System.out.println("FILE DOES NOT EXIST."); 
      }   
     }catch(Exception ex){ 
      System.out.println("Failed!"); 
      ex.printStackTrace(); 
     } 


public String request(HttpResponse response, String file){ 
     String result = ""; 
     try{ 
      InputStream in = response.getEntity().getContent(); 
      FileOutputStream f = openFileOutput(file, MODE_WORLD_WRITEABLE); 
      byte[] buffer = new byte[in.toString().length()]; 
      int len1 = 0; 
      int counter = 0; 
      while ((len1 = in.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
       counter++; 
      } 
      f.close(); 
     } 
     catch(Exception ex){ 
      result = "Error"; 
     } 
     return result; 
    } 

在此先感谢。

问候,Javi。

回答

4

这是因为PDF文件在你自己的包和Adobe Reader试图从你的包,它是不允许用于开发Android应用程序访问PDF文件。

您可以尝试保存SDCARD上的文件,然后打开它

+0

Thanks Drax。这让我继续开发xD。 – sharnak82