2011-08-04 54 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

相关问题