android:使用内置的pdf查看器从我的应用程序打开pdf

这是我原来的问题:

我希望能够在我的应用程序中使用内置的PDF查看器应用程序中的Android打开PDF文件,但我不知道如何启动其他应用程序。 我确定我必须打电话给开始活动,我只是不知道如何识别应用程序即时通讯,以及如何将文件传递到该特定的应用程序。

任何人都有线索?

我刚刚了解到我手机上的pdf查看器实际上是由HTC制作的,而Adobe刚刚发布了他们的android pdf查看器(这非常棒)。 所以新的问题是:我如何validation用户安装了Adobe的查看器,然后如何从应用程序中打开该应用程序中的文件?

Solutions Collecting From Web of "android:使用内置的pdf查看器从我的应用程序打开pdf"

AFAIK,Adobe没有logging任何公共Intents它希望开发人员使用。

您可以尝试一个ACTION_VIEW IntentUri指向文件(无论是在SD卡或MODE_WORLD_READABLE在您的应用程序本地文件存储)和MIMEtypes的"application/pdf"

您可以通过编程来确定用户设备上是否存在合适的应用程序,而不会捕获exception。

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("path-to-document")); intent.setType("application/pdf"); PackageManager pm = getPackageManager(); List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0); if (activities.size() > 0) { startActivity(intent); } else { // Do something else here. Maybe pop up a Dialog or Toast } 
 private void loadDocInReader(String doc) throws ActivityNotFoundException, Exception { try { Intent intent = new Intent(); intent.setPackage("com.adobe.reader"); intent.setDataAndType(Uri.parse(doc), "application/pdf"); startActivity(intent); } catch (ActivityNotFoundException activityNotFoundException) { activityNotFoundException.printStackTrace(); throw activityNotFoundException; } catch (Exception otherException) { otherException.printStackTrace(); throw otherException; } } 
  FileFinalpath = SdCardpath + "/" + Filepath + Filename; File file = new File(FileFinalpath); if (file.exists()) { Uri filepath = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(filepath, "application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); try { startActivity(intent); } catch (Exception e) { alert.showAlertDialog(PDF_Activity.this, "File Not Started...","File Not Started From SdCard ", false); Log.e("error", "" + e); } } else { alert.showAlertDialog(PDF_Activity.this, "File Not Found...","File Not Found From SdCard ", false); } 

虽然这是一个相当古老的话题,但是这里有一个解决scheme,用于打开资源/文件夹中的PDF与外部PDF阅读器应用程序。 它使用自定义内容提供者: https : //github.com/commonsguy/cwac-provider

使用这个,你可以定义从assets /或res / raw /文件夹提供的任何文件。

尝试一下! 迄今为止发现的最好,最简单的解决scheme。

我也遇到了同样的问题,当试图在Android设备上显示PDF,最后结束了解决scheme(第三方PDF库集成)

https://github.com/JoanZapata/android-pdfview

而我已经testing了下面列出的这些也在工作的多个库,

https://github.com/jblough/Android-Pdf-Viewer-Library

&mupdf附带ndk风味( https://code.google.com/p/mupdf/downloads/detail?name=mupdf-1.2-source.zip&can=2&q= ),需要使用NDK提取然后使用它在应用程序中作为jar或java等漂亮的文章来解释这个库的使用@ http://dixitpatel.com/integrating-pdf-in-android-application/

Android有一个Android 5.0 / Lollipop的内置框架,叫做PDFRenderer 。 如果你能假设你的用户有Android 5.0,那么这可能是最好的解决scheme。

Google开发者网站上有一个正式的例子:

http://developer.android.com/samples/PdfRendererBasic/index.html

它不支持注释或其他更高级的function; 对于那些你真的回到使用意图打开一个完整的应用程序,或embedded像mupdf一样的SDK。

(免责声明:我偶尔会在mupdf上工作。)

除了被标记为答案的那些之外,您还需要在manifest.xml中拥有这些权限

**

 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

**