Скачивание pdf с сервера и его отображение - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь загрузить pdf с сервера и отобразить его как есть.

Я попробовал следующий фрагмент кода, но он выдает ошибку, как показано ниже.

Я не могу понять, почему он дает No Activity found to handle Intent исключение.

Я новичок в Android, поэтому любая помощь приветствуется ...

фрагмент кода onCreate ()

String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    File folder = new File(extStorageDirectory, "pdf");
    folder.mkdir();
    File file = new File(folder, "Read.pdf");
    try {
        file.createNewFile();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    Downloader.DownloadFile(
            "http://www.nmu.ac.in/ejournals/aspx/courselist.pdf", file);

    File file1 = new File(Environment.getExternalStorageDirectory()
            + "/pdf/Read.pdf");
    PackageManager packageManager = getPackageManager();
    Intent testIntent = new Intent(Intent.ACTION_VIEW);
    testIntent.setType("application/pdf");
    @SuppressWarnings({ "rawtypes", "unused" })
    List list = packageManager.queryIntentActivities(testIntent,
            PackageManager.MATCH_DEFAULT_ONLY);
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    Uri uri = Uri.fromFile(file1);
    intent.setDataAndType(uri, "application/pdf");
    startActivity(intent);

Logcat

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pdftest/com.pdftest.PDFFromServerExample}: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/pdf/Read.pdf typ=application/pdf }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/pdf/Read.pdf typ=application/pdf }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
at android.app.Activity.startActivityForResult(Activity.java:2817)
at android.app.Activity.startActivity(Activity.java:2923)
at com.pdftest.PDFFromServerExample.onCreate(PDFFromServerExample.java:44)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)

Ответы [ 4 ]

2 голосов
/ 30 января 2012

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

1 голос
/ 30 января 2012

Похоже, у вас нет программы чтения PDF, хотя вы пытаетесь читать PDF.

Единственное, что вам нужно сделать, это установить программу чтения PDF, например Adobe Reader или что-то еще.после этого этот код будет работать нормально !!!!

И вы намерены только просматривать PDF-файл, и у вас есть подключение к Интернету, тогда было бы хорошо открыть PDF-файл в Google Docs, например,

http://docs.google.com/viewer?url=http://www.nmu.ac.in/ejournals/aspx/courselist.pdf.

Примечание: (хорошо .. это альтернатива просмотра PDF, честно говоря, я не рекомендую это)

1 голос
/ 30 января 2012

Android не предоставляет никаких встроенных приложений для чтения PDF-содержимого.Итак, в вашем случае вы делаете как

typ=application/pdf

Но нет приложения, которое читает или знает, к чему это относится.Таким образом, вы должны установить программу чтения PDF, которая может быть любой, которая пытается связать typ=application/pdf и передает ее в это приложение для чтения PDF.

0 голосов
/ 10 мая 2013
Uri path = Uri.fromFile(dwonload_file_name);
                try {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(path, "application/pdf");
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);
                    finish();
                } catch (ActivityNotFoundException e) {
                    Toast.makeText(
                            context,
                            "PDF Reader application is not installed in your device",
                            Toast.LENGTH_SHORT).show();

                }

Надеюсь, это будет полезно. Полный исходный код "Как скачать файл с сервера"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...