2012-01-30 2 views
0

Я пытаюсь загрузить PDF-файл с сервера и отображать его как есть.Загрузка pdf с сервера и отображение его

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

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

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

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) 
+0

см. Я отредактировал свой ответ ..might же, что вы хотите .. – dhams

ответ

1

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

typ=application/pdf 

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

+0

Итак, вы подразумеваете, что файл загружается? – GAMA

+0

Кажется, из-за ошибки, что ваше приложение рушится где-то здесь - 'intent.setDataAndType (uri," application/pdf ");' просто отлаживать и проверять его. –

+0

И для проверки того, что ваш файл загружен, вы можете проверить его в SDCard. –

2

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

+0

Итак, вы имеете в виду, что файл загружается? – GAMA

+0

Загрузка/отображение - это два разных процесса, пожалуйста, изучите их на основе того, что сказал Latit. – JoxTraex

+0

Я понял. У меня нет PDF-ридера, поэтому файл не отображается, но как узнать, что этот файл загружен или нет? – GAMA

1

Похоже, вы не имеете читателя в формате 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, честно я не рекомендую)

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

       } 

Надеется, что это будет полезно. Full Source Code for "How to download file from Server"

Смежные вопросы