如何在pdfactivity的webview中打开pdf文件?

How to open pdf files in webview in pdfactivity?

您好,我正在开发应用程序以在 pdf 中的 webview 中打开 pdf 文件activity。我尝试通过意图打开它重定向到系统内置应用程序而不是 pdfactivity.java。 找到下面的代码, 我在我的 webview activity,

中声明了这个
 private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Uri uri = WebvActivity.this.getIntent().getData();
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(uri, "application/pdf");
                intent.putExtra(PdfActivity.EXTRA_PDFFILENAME, "url");
                startActivity(intent);
            return super.shouldOverrideUrlLoading(view, url);
        }

我正在使用 PdfViewer.jar 库, 在 README 文本中提到使用

Intent intent = new Intent(this, WebviewActivity.class);
     intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, "PATH TO PDF GOES HERE");
     startActivity(intent);

如何从 webview 中的网页获取 URL 个 pdf 文件并将它们加载到 PdfActivity 中。 见下文link供您参考, https://sourceforge.net/p/andpdf/code/HEAD/tree/tag/Beta_0_1_11/AndroidPdfViewer/activitysrc/net/sf/andpdf/

也许这篇link对你很有帮助How to display a PDF via Android web browser without "downloading" first

您可以使用 Google 文档查看器打开 pdf。

宾果!!我的问题已解决可以直接使用 BufferedInputStream

打开 pdf

我创建了两个 activity,第一个 Activity 用于在 webview 中加载所有 pdf。当用户单击 pdf 的 link 时,pdfurl 获取 url 作为字符串,将字符串传递给下一个 activity。 PdfActivity.java

   final String pdfurl = view.getHitTestResult().getExtra();
         Intent intent = new Intent(PdfActivity.this,PdfViewer.class);
         intent.putExtra("PDFURL",pdfurl);
         startActivity(intent);

第二个 Activity 是 PdfViewer,bateksc pdfviewer 从 url 加载 pdf,编辑如上 PdfViewer.java

package ak.wp.meto.activity;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import ak.wp.meto.R;

public class PdfViewer extends Activity {
    private TextView txt; // You can remove if you don't want this
    private PDFView pdf;
    String value = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_pdf);
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            value = bundle.getString("PDFURL");
        }
        System.out.println("PRINT PDFVIEWER DATA" +value);
        pdf = (PDFView) findViewById(R.id.pdfView); //github.barteksc
        txt = findViewById(R.id.txtPdf);
        String pdfUrl = value;
        try{
            new RetrievePdfStream().execute(pdfUrl);
        }
        catch (Exception e){
            Toast.makeText(this, "Failed to load Url :" + e.toString(), Toast.LENGTH_SHORT).show();
        }
    }

    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) {
            pdf.fromStream(inputStream).load();
        }
    }

}