Android:Webview在应用外打开pdf网址

时间:2016-03-08 06:17:18

标签: android url pdf webview

我正在尝试使用谷歌文档打开pdf网址,但是对于API级别21及以上版本,pdf在移动浏览器中打开,而在21岁以下则无法打开。 当我将任何网站网址设置为相同的网页浏览时,它会在应用内完全打开。

究竟是什么问题?

请帮忙。

这是我的webview代码:

WebView webviewPDF = (WebView) view.findViewById(R.id.resource8_9_webview);
        webviewPDF.loadUrl(strUrl);
        WebSettings webSettings = webviewPDF.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        webSettings.setUseWideViewPort(true);
        webviewPDF.setWebChromeClient(new WebChromeClient());
        webviewPDF.clearSslPreferences();

2 个答案:

答案 0 :(得分:0)

android没有支持旧版本。

试试这对我有用..

webView = (WebView) view.findViewById(R.id.webView);
webView.setVisibility(View.VISIBLE);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) //required for running javascript on android 4.1 or later
    {
        settings.setAllowFileAccessFromFileURLs(true);
        settings.setAllowUniversalAccessFromFileURLs(true);
    }
settings.setBuiltInZoomControls(true);
webView.setWebChromeClient(new WebChromeClient());
webView.addJavascriptInterface(new MyJavascriptInterface(), "androidInterface");

加载PDF

private void loadPdfFile() {
    String filePAth = getArguments().getString(PDF_FILE_PATH);
    if (filePAth == null) {
        return;
    }

    Uri path = Uri.parse(filePAth);

    try {
        Logger.info("PDF File Path " + path.toString());
        InputStream ims = getResources().getAssets().open("pdfviewer/index.html");
        String line = getStringFromInputStream(ims);
        if (line.contains("THE_FILE")) {
            line = line.replace("THE_FILE", path.toString());

            FileOutputStream fileOutputStream = getActivity().openFileOutput("index.html", Context.MODE_PRIVATE);
            fileOutputStream.write(line.getBytes());
        }
    } catch (IOException e) {
        Logger.error("Errror on loading pdf file : " + path);
    }


    webView.loadUrl("file://" + getActivity().getFilesDir() + "/index.html");
    mCurrentPage = 1;
}

//将InputStream转换为String

private static String getStringFromInputStream(InputStream is) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();

    String line;
    try {

        br = new BufferedReader(new InputStreamReader(is));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return sb.toString();
}

答案 1 :(得分:-1)

这是你问题的答案:

WebView webview = FindViewById<WebView>(Resource.Id.webView1);
        urlPdf = ("pdf url example ");
        WebSettings settings = webview.Settings;
        settings.JavaScriptEnabled = true;
        webview.LoadUrl("http://drive.google.com/viewerng/viewer?embedded=true&url=" + urlPdf);