2012-04-25 90 views
0

我想讀從設備的內部存儲器中的PDF文件,我的代碼是在這裏:從內部存儲器讀取PDF文件時出錯?

   File pdfFile;  

      pdfFile=new File("data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf"); 


       if(pdfFile.exists()) 
       { 
        try{ 
         FileOutputStream fileOutput = openFileOutput(pdfFile.toString(), Context.MODE_WORLD_READABLE); 
        } 
        catch (Exception e) { 
         // TODO: handle exception 
         e.printStackTrace(); 
        } 
        Uri path = Uri.fromFile(pdfFile); 
       Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
       pdfIntent.setDataAndType(path, "application/pdf"); 
       pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

       try 
       { 
        startActivity(pdfIntent); 
       } 
       catch(ActivityNotFoundException e) 
       { 
        Toast.makeText(ChTable.this, "No Application available to view pdf", Toast.LENGTH_LONG).show(); 

       } 

但是PDF閱讀器顯示-file不支持,或者一個錯誤文件找不到。但我已經檢查了文件在這個位置。我也改變了文件的權限,但仍然是相同的結果。有人會幫我檢測並解決我的問題嗎?

回答

0
data/data/com.myapp.main/app_c"+md+"/c"+md+".pdf" 

是這條道路是否正確?

我猜路徑應該像下面那樣。

data/data/com/myapp/main/app_c"+md+"/c"+md+".pdf" 
+0

路徑是正確的! – Navdroid 2012-04-25 06:20:57

0

您應該使用其中一個apis來獲取應用程序的文件目錄,而不是假定路徑是什麼。

但是,您的實際問題很可能是您在那裏創建的任何文件可能都是私有的,因此PDF閱讀器應用程序無權訪問它。

解決方案是將文件模式更改爲世界可讀,或者更常見的是將文件放在外部存儲器(即「sdcard」)而不是內部存儲器上,因爲它不會(至今)有一個權限的概念。儘管值得記住的是,設備不保證有外部存儲,或者即使存在,也可以在任何給定的時間點訪問。