2016-03-14 33 views
0

我想使用的意圖,它採用以下打開PDF:
下面是代碼,我有:的Android從URI出發含量打開PDF

Intent intent = new Intent(Intent.ActionVIEW) 
    intent.setDataAndType(Uri.parse("CONTENTURI + FILENAME","application/pdf" 
    try { startActivity(intent)} catch excpetion and so on. 

它與我已經安裝任何應用程序彈出,來自Adobe Reader,Google PDF閱讀器,POLARIS(因爲我正在使用Galaxy Tab 3進行測試),而且沒有任何工作。每個說不支持的文件。

是否下載並顯示正確的解決方案在這種情況下,或任何想法?提前致謝!

+0

那麼,這甚至不會編譯 - 你可能比代碼行有更多的語法錯誤。另外,'「CONTENTURI + FILENAME」'不是有效的'Uri'。人們很難告訴你爲什麼你的代碼不工作時,你不發佈實際的代碼不起作用。 – CommonsWare

+0

@CommonsWare我的不好之處在於,我應該明確地說出uri是什麼。網址以content:// +「文件名路徑」開頭。關於如何使用以內容開頭的網址的任何想法? –

+0

「網址以content:// +」文件名路徑「開始。」 - 'content'是一個有效的方案,但其餘的不一定是「文件名路徑」,不止是'/ questions/35999407/android-open-pdf-from-uri-starting-content?noredirect = 1#comment59680717_35999407 '是堆棧溢出服務器上文件名的路徑。 「關於如何使用以內容開頭的網址的任何想法?」 - 使用'ContentResolver'和類似'openInputStream()'的方法。今天早些時候我寫了一篇關於這篇文章的長篇博文(https://commonsware.com/blog/2016/03/15/how-consume-content-uri.html)。 – CommonsWare

回答

0

以下代碼觸發PDF文件的VIEW操作(打開默認的PDF查看器,在可以查看PDF的應用程序之間進行選擇,或者如果您沒有安裝任何應用程序,則選擇錯誤)。

File file = new File("your pdf path here"); 

    if (file.exists()) { 

     Uri pdfPath = Uri.fromFile(file); 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(pdfPath, "application/pdf"); 

    try { 
    startActivity(intent); 
     } catch (ActivityNotFoundException e) { 
     //if user doesn't have pdf reader instructing to download a pdf reader 
     } 


    } 

注意:PDF不應保存在本地應用程序,否則第三方應用程序將無法訪問。您應該使用media位置。

+1

請爲OP增加更多見解,說明爲什麼你發佈了你的代碼以及爲什麼它可以幫助他。 – thst