Открытие pdf файла программно идет на страницу меню? - PullRequest
1 голос
/ 22 ноября 2011

Почему каждый раз, когда я пытаюсь открыть PDF-файл в моей SDCARD, используя следующий код, он фактически не открывает сам PDF-файл, а входит в меню Adobe Reader?Что-то не так с моим кодом?

Intent intent = new Intent();
    File pdfFile = new File("/sdcard/sample.pdf");
    Uri path = Uri.fromFile(pdfFile);
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(path);
    intent.setType("application/pdf");
    intent.setPackage("com.adobe.reader");
    startActivity(intent);

Ответы [ 2 ]

12 голосов
/ 22 ноября 2011

Нет, в этом нет ничего плохого. Вы установили тип в pdf и указали пакет как adobe.reader. То, что это делает, вызывает намерение запустить PDF в Adobe Reader. Невозможно отобразить PDF непосредственно в вашем приложении без использования библиотеки (или написания кода самостоятельно) для рендеринга PDF-файлов и их отображения.

Обратите внимание, что если вы задаете только тип, а не пакет, система найдет любое доступное приложение для отображения PDF-файлов

EDIT

Вы можете попробовать что-то вроде

    Intent intent = new Intent(Intent.ACTION_VIEW);
    File file = new File( filename  );
    intent.setDataAndType( Uri.fromFile( file ), "application/pdf" );
    startActivity(intent);

или

        Intent intent = new Intent();
        intent.setPackage("com.adobe.reader");
        intent.setDataAndType(Uri.fromFile(file), "application/pdf");
        startActivity(intent);
1 голос
/ 22 ноября 2011

Здесь я даю имя моего pdf файла. Вы даете свое имя файла.

    private static String FILE = Environment.getExternalStorageDirectory().getPath()+"/TestPDF.pdf";   

    File file = new File(FILE);

    if (file.exists()) {
        Uri path = Uri.fromFile(file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(path, "application/pdf");
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        try {
            startActivity(intent);
        } 
        catch (ActivityNotFoundException e) {
            Toast.makeText(this, 
                "No Application Available to View PDF", 
                Toast.LENGTH_SHORT).show();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...