Android: открыть pdf-файл из моего приложения, используя встроенный просмотрщик PDF-файлов

Это был мой первоначальный вопрос:

Я хочу, чтобы иметь возможность открыть pdf-файл в моем приложении, используя встроенное приложение для просмотра в формате Android, но я не знаю, как запускать другие приложения. Я уверен, что мне нужно вызвать начальную активность, я просто не знаю, как определить открытие приложения и как передать файл в это конкретное приложение.

Кто-нибудь знает?

Я только что узнал, что программа просмотра pdf, которую я имею на своем телефоне, действительно сделана компанией HTC, и что Adobe едва ли выпустила программу просмотра Android для Android (что здорово). Итак, новый вопрос заключается в следующем: как я могу проверить, что пользователь установил средство просмотра adobe, а затем как открыть файл в этом приложении из моего приложения?

Solutions Collecting From Web of "Android: открыть pdf-файл из моего приложения, используя встроенный просмотрщик PDF-файлов"

AFAIK, Adobe не документировала никаких публичных Intents она хочет, чтобы разработчики использовали.

Вы можете попробовать ACTION_VIEW Intent с Uri указывающим на файл (либо на SD-карте, либо в MODE_WORLD_READABLE в вашем локальном хранилище файлов приложений), и на MIME-тип "application/pdf" .

Вы можете программно определить, существует ли подходящее приложение на устройстве пользователя, не перехватывая исключения.

 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); } 

Хотя это довольно старая тема, вот решение для открытия PDF-файла, находящегося в папке «Ресурс / Папка» с помощью внешнего приложения для чтения PDF-файлов. Он использует собственный поставщик контента: https://github.com/commonsguy/cwac-provider

Используя это, вы можете определить любой файл, который будет предоставлен из активов / или res / raw / folder.

Попробуй! Лучшее и простое решение, которое я нашел до сих пор.

Я также столкнулся с такой же проблемой, когда пытался отобразить PDF на устройстве Android и, наконец, в итоге получил решение (интеграция библиотеки сторонних разработчиков)

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

В то время как я тестировал несколько библиотек для перечисленных ниже, которые также работают,

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, это, вероятно, лучшее решение.

На сайте разработчика Google есть официальный пример:

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

Он не поддерживает аннотацию или другие более сложные функции; Для тех, кто действительно вернулся к использованию намерения, чтобы открыть полноценное приложение или вставить SDK, например mupdf .

(Отказ от ответственности: я очень редко работаю над 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" /> 

**