0

我正在使用一个PDFViewer库来查看Activity从给定的url.

我正在使用这个库托管在 Git 上的开源代码。

Nougat在最新的 android 版本&中一切正常Oreo。该文件加载并显示在屏幕上很容易。

Marshmallow但是,在使用&等旧版本进行测试时Kitkat,文档未加载,我收到以下信息error

Attempt to invoke virtual method 'int java.io.InputStream.read(byte[])' on a null object reference

我的完整日志报告是:

E/PDFView: load pdf error
           java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[])' on a null object reference
               at com.github.barteksc.pdfviewer.util.Util.toByteArray(Util.java:36)
               at com.github.barteksc.pdfviewer.source.InputStreamSource.createDocument(InputStreamSource.java:37)
               at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53)
               at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25)
               at android.os.AsyncTask$2.call(AsyncTask.java:295)
               at java.util.concurrent.FutureTask.run(FutureTask.java:237)
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
               at java.lang.Thread.run(Thread.java:818)
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa2f736e0
D/Link:: http://mylink.com/FileUpload/Master/PDFModule/636586353416035750_सेफ हाउस संचालन सम्बन्धी सूचना.pdf
E/PDFView: load pdf error
           java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[])' on a null object reference
               at com.github.barteksc.pdfviewer.util.Util.toByteArray(Util.java:36)
               at com.github.barteksc.pdfviewer.source.InputStreamSource.createDocument(InputStreamSource.java:37)
               at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53)
               at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25)
               at android.os.AsyncTask$2.call(AsyncTask.java:295)
               at java.util.concurrent.FutureTask.run(FutureTask.java:237)
               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
               at java.lang.Thread.run(Thread.java:818)

我的PDFclass代码如下:

public void getPdfFile() {
        pdf_link = this.getIntent().getExtras().getString("PDF_URL");
        checkStrUrl = pdf_link.substring(pdf_link.lastIndexOf("_") + 1);
        if (!checkFileInDevice(checkStrUrl)) {
            new RetrievePDFStream().execute(pdf_link);
        } else {
            File file = new File(Environment.getExternalStorageDirectory().toString() + "/Application Documents/" + checkStrUrl);
            pdfView.fromFile(file).load();
        }

    }

    class RetrievePDFStream extends AsyncTask<String, Void, InputStream> {

        @Override
        protected InputStream doInBackground(String... strings) {
            InputStream inputStream = null;
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                if (urlConnection.getResponseCode() == 200) {
                    inputStream = new BufferedInputStream(urlConnection.getInputStream());

                }
            } catch (IOException e) {
                return null;
            }
            return inputStream;
        }

        @Override
        protected void onPostExecute(InputStream inputStream) {
            pdfView.fromStream(inputStream).load();
        }

    }
4

0 回答 0