【问题标题】:Android : Webview opening pdf url outside appAndroid:Webview在应用程序外打开pdf url
【发布时间】:2016-06-21 23:37:14
【问题描述】:

我正在尝试使用 google docs 打开 pdf url,但对于 API 级别 21 及更高级别的 pdf 会在移动浏览器中打开,而对于低于 21 的级别则无法打开。 当我将任何网站 url 设置为相同的 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();

【问题讨论】:

    标签: android url pdf webview


    【解决方案1】:

    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 转换为字符串

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

    【讨论】:

      【解决方案2】:

      这是您问题的答案:

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

      【讨论】:

      • 只粘贴一个sn-p而不做任何解释不是很有帮助,请解释它的作用,以及为什么这是“答案”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多