2013-07-16 68 views
0
查看它

我在我的應用程序創建的PDF文件,併成功地存儲在SD卡,現在我想將PDF存儲不是在我的SD卡,但在內部存儲如圖here但是當我打開意向的PDF閱讀器爲:麻煩在內部存儲器中存儲的PDF和Adobe的

Intent i = new Intent(); 
i.setAction(Intent.ACTION_VIEW); 
Uri uri = Uri.fromFile(file); 
Log.v("Path",file.getAbsolutePath()); // Path data/data/com.cloudchowk.his.patient/files/LIPID PROFILE1300000403.pdf 
i.setDataAndType(uri, "application/pdf"); 
startActivity(i); 

PDF閱讀器顯示錯誤The document path is not valid.

我已經試過這兩個設備上一個植根和一個沒有,但它不工作的任何他們。我該怎麼辦 ?有任何想法嗎?

+0

創建一個URI並傳遞路徑 –

+0

我已經這樣做了,請參閱我在「pdf路徑」中的 –

回答

0

獲取路徑,並創建URI

 File internalFile = getFileStreamPath("pdf path"); 
    Uri file = Uri.fromFile(internalFile); 
    Intent i = new Intent(); 
    i.setAction(Intent.ACTION_VIEW); 
    i.setDataAndType(file, "application/pdf"); 
    startActivity(i); 
+0

問題中編寫的代碼,是否應該寫入file.getAbsolutePath()?或文件的只是名字,因爲當我使用file.getAbsolutePath(),然後我得到一個異常說「文件路徑中包含一個分隔符」,但現在我只用文件名和我沒有得到任何異常,但僅僅從同樣的錯誤土坯,「文件的路徑不是有效的」 –

+0

通完整路徑,並檢查文件是否存在 –

+0

你說的和我做了什麼基本上是相同的只是用不同的functions.I已經試過你的方法,但問題仍然存在,該問題是存儲在內部存儲器中的數據僅適用於該應用程序,而其他應用程序永遠無法看到這些數據,但我希望Adobe能夠讀取此內部存儲器。 –

0

爲了從內部存儲文件提供給其他應用最乾淨的方法是使用一個內容提供商。 幸運的是,Android的自帶FileProvider - 這可能只是滿足您的需求的實現。 你並不需要執行的代碼,你只需要specifiy供應商在你的清單。