我需要一个指向(最好是免费的)PDF查看器应用程序的指针,我可以通过Intent上的startActivity在文件或URL链接上调用它。我知道没有真正的标准 - 我有一个可以读取本地PDF文件的OpenOffice手机,还有一个没有内置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 :(得分:0)
我希望以下代码段对您阅读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);