在WebView

时间:2018-01-31 07:21:27

标签: android

目前我从服务器获取Base64编码的字符串,此Base64可以是pdf文件,也可以是.doc, .xls, .ppt, .jpg, .png, .mov, .txt等其他格式,那么如何加载{{1}在Base64

2 个答案:

答案 0 :(得分:0)

我认为如果在webview中打开它,最好使用android中的默认安装应用程序打开文件。例如,以下代码将打开一个pdf文件: -

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File(“your file path”);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
startActivity(intent);

为此,您必须将base64数据解码为实际文件。然后,您可以触发该文件的意图。您还需要提供要打开的文件的mime类型。在上面的示例" application / pdf "是pdf文件的mime类型。 Android系统将自动显示可用于打开文件的已安装应用程序列表。

您可以找到mime类型列表from this link.

答案 1 :(得分:0)

使用服务器的直接URL打开文件。不要转换你的文件。

使用Google Drive Weburl加载文件网址。

     @BindView(R.id.webView)
    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_open_any_doc);
        ButterKnife.bind(this);

        String url = "http://www.adobe" +
                ".com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf";
        String googleDoc = "http://drive.google.com/viewerng/viewer?embedded=true&url=";


        webView.getSettings().setJavaScriptEnabled(true);
//        webView.getSettings().setPluginsEnabled(true);
        webView.getSettings().setAllowFileAccess(true);

//        String doc="<iframe src='http://docs.google.com/viewer?url=+location to your PDF File+'
//        width='100%' height='100%'
//        style='border: none;'></iframe>";


        final Activity activity = this;

        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different scales.
                // The progress meter will automatically disappear when we reach 100%
                activity.setProgress(progress * 1000);
            }
        });


        webView.loadUrl(googleDoc + url);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return false;
            }


        });
    }

找到下面的XML!

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.aw.avi.allutilsmethodsapp.ui.activity.webviews.OpenAnyDocActivity">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

否则如果您要加载这些文件,请使用特定应用程序或添加不同的软件。

  1. 对于.doc,.xls,.ppt类型:使用Apache POI
  2. 适用于Mov - Exo播放器
  3. 对于JPG,PNG GIF使用Glide。