Подтвердить что ты не робот

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

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

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

У кого есть ключ?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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
}

Ответ 3

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

Ответ 4

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

            }

Ответ 5

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

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

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

Ответ 6

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

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/

Ответ 7

Android имеет встроенную инфраструктуру от Android 5.0/Lollipop, она называется PDFRenderer. Если вы можете предположить, что ваши пользователи имеют Android 5.0, это, вероятно, лучшее решение.

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

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

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

(Отказ от ответственности: я очень редко работаю над mupdf.)

Ответ 8

В дополнение к тем, которые отмечены как ответ, вам понадобятся эти разрешения в файле 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" />

**