2011-08-04 91 views
0

我需要一個指向(最好是免費的)PDF查看器應用程序的指針,我可以通過Intent上的startActivity調用文件或URL鏈接。我知道沒有真正的標準 - 我有一個OpenOffice附帶的可以讀取本地PDF文件的手機,以及一個沒有內置PDF閱讀器的手機。要調用的Android PDF查看器應用程序

我想要的是一個應用程序的名稱,我可以建議我的用戶從市場上下載這個PDF閱讀器,我可以通過配置Intent和調用startActivity來調用該閱讀器。當我攔截一個pdf文件的URL並發現應用程序尚未安裝時,我會提出這個建議。儘管醜陋,但它比現在獲得的空白屏幕更好,因爲內置瀏覽器不支持PDF。

我已經安裝了Adobe的PDF閱讀器,但它並未在包管理器中顯示爲處理PDF文件的候選者。

我已經使用SO:how-to-render-pdf-in-android中建議的技術來檢查基於URL的PDF鏈接和本地文件PDF鏈接的候選活動,並看到總是爲http:// URL鏈接調用com.android.browser.Browser; URL爲"file.pdf"會導致OpenOffice在一部手機上被選中,另一部手機上沒有任何內容。 Adobe的PDF閱讀器不適用於這兩種方法。

我嘗試了Google Docs查看器方法(如SO:android-load-pdf-pdf-viewer中所建議的那樣,但是這留下了很多希望,特別是當我嘗試加載的PDF圖像在設備的屏幕上繼續向下移動時,直到用戶需要滾動幾個屏幕已滿的空白屏幕到達文檔

我看到如android-pdf-viewer這樣的庫是一個潛在的解決方案,但我更願意鏈接到另一個應用程序,而不是構建PDF支持(包括字體等)然後允許我的應用程序支持多個PDF查看器應用程序 - 選擇一個用戶已經安裝的應用程序,或者在我需要的時候沒有兼容的閱讀器的情況下推薦我最喜歡的應用程序。請參閱使用這些類型的庫來創建這樣的應用程序並將其加載到市場中,但在此之前我想確保我沒有重新發明輪子。

我發現droid-reader應用程序看起來很有希望,但這似乎並沒有從市場上獲得。雖然我個人很喜歡將文件下載到我的SD卡並從那裏進行安裝的體操,但對於我所針對的普通公衆用戶來說,這並不是一個可行的選擇。

+0

什麼是mime類型?嘗試應用程序/ pdf –

+0

對於本地文件,我將mime類型設置爲application/pdf,但如果以前沒有安裝「寄存器」作爲此類文件的處理程序,這仍然不會返回任何可行的活動。 'webUrl =「file.pdf」; path = Uri.parse(webUrl); intent = new Intent(Intent.ACTION_VIEW); intent.setData(path); riList = pm.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY); intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(path,「application/pdf」); riList = pm.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY); ' – Colin

+0

編輯上面的評論時間不足 在這兩種情況下,「riList」都是空的,當設備沒有安裝默認瀏覽器時,沒有設置MIME類型。我正在尋找一個推薦。 – Colin

回答

0

我希望下面的代碼snippit對你閱讀pdf很有幫助。它將使用您的設備上已設置的默認PDF查看器。

Intent intent= new Intent(Intent.ACTION_VIEW); 
File f = new File("/mnt/sdcard/file.pdf"); 
intent.setDataAndType(Uri.fromFile(f),"application/pdf"); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(intent); 
+0

對不起,我應該在我的問題中更清楚一點(它太羅嗦了)......我使用了類似的代碼(事實上幾乎相同)來調用默認的PDF查看器。問題是許多設備沒有安裝默認的PDF查看器。我所追求的是一個好的/免費的PDF查看器的指針,如果他們還沒有安裝,我可以推薦給我的用戶。 – Colin

相關問題