PushInstructionsActivity.java 源代码


package activity.setting;

import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import base.HiActivity;
import com.baidu.mobads.sdk.internal.ci;
import com.hichip.campro.R;
import common.HiDataValue;
import common.TitleView;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.xwpf.converter.core.FileImageExtractor;
import org.apache.poi.xwpf.converter.core.FileURIResolver;
import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import utils.HiTools;

public class PushInstructionsActivity extends HiActivity {
    private String mUid = "";
    WebView myWebView;
    TitleView title;
    private String url;

    @Override
    protected int setLayoutId() {
        return R.layout.activity_agreement;
    }

    @Override
    protected void init(Bundle bundle) {
        initTitle();
        initData();
        initFile();
    }

    private void initFile() {
        final String hTmlPath = HiDataValue.getHTmlPath(this);
        HiTools.getUriByPhone(this, this.mUid);
        showjuHuaDialog();
        new Thread(new Runnable() {
            @Override
            public void run() {
                PushInstructionsActivity pushInstructionsActivity = PushInstructionsActivity.this;
                String replace = HiTools.getUriByPhone(pushInstructionsActivity, pushInstructionsActivity.mUid).replace("html", "docx");
                PushInstructionsActivity.this.copyAssetAndWrite(hTmlPath, replace);
                PushInstructionsActivity pushInstructionsActivity2 = PushInstructionsActivity.this;
                pushInstructionsActivity2.docx2html(hTmlPath, replace, HiTools.getUriByPhone(pushInstructionsActivity2, pushInstructionsActivity2.mUid), hTmlPath);
                PushInstructionsActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        PushInstructionsActivity.this.dismissjuHuaDialog();
                        PushInstructionsActivity.this.myWebView.loadUrl("file://" + hTmlPath + HiTools.getUriByPhone(PushInstructionsActivity.this, PushInstructionsActivity.this.mUid));
                    }
                });
            }
        }).start();
    }

    private void initData() {
        WebView webView = (WebView) findViewById(R.id.webView);
        this.myWebView = webView;
        WebSettings settings = webView.getSettings();
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        settings.setBuiltInZoomControls(true);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);
        settings.setCacheMode(2);
        settings.setDefaultTextEncodingName("utf-8");
        settings.setDisplayZoomControls(false);
        settings.setAllowFileAccess(true);
        this.myWebView.setWebViewClient(new WebViewClient());
        this.myWebView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView webView2, int i, String str, String str2) {
                super.onReceivedError(webView2, i, str, str2);
                PushInstructionsActivity.this.myWebView.setVisibility(8);
            }

            @Override
            public void onReceivedError(WebView webView2, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
                super.onReceivedError(webView2, webResourceRequest, webResourceError);
                PushInstructionsActivity.this.myWebView.setVisibility(8);
            }
        });
        this.myWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onReceivedTitle(WebView webView2, String str) {
                super.onReceivedTitle(webView2, str);
                if (str.contains(ci.b)) {
                    PushInstructionsActivity.this.myWebView.setVisibility(8);
                }
            }
        });
    }

    private void initTitle() {
        this.url = getIntent().getStringExtra("url");
        this.mUid = getIntent().getStringExtra("mUid");
        this.title.setTitle(getString(R.string.push_tips));
        this.title.setButton(0);
        this.title.setNavigationBarButtonListener(new TitleView.NavigationBarButtonListener() {
            @Override
            public final void OnNavigationButtonClick(int i) {
                PushInstructionsActivity.this.lambda$initTitle$0$PushInstructionsActivity(i);
            }
        });
    }

    public void lambda$initTitle$0$PushInstructionsActivity(int i) {
        if (i != 0) {
            return;
        }
        finish();
    }

    public void docx2html(String str, String str2, String str3, String str4) {
        try {
            File file = new File(str + str2);
            if (!file.exists()) {
                System.out.println("Sorry File does not Exists!");
            } else {
                if (!file.getName().endsWith(".docx") && !file.getName().endsWith(".DOCX")) {
                    System.out.println("Enter only MS Office 2007+ files");
                }
                XWPFDocument xWPFDocument = new XWPFDocument(new FileInputStream(file));
                File file2 = new File(str);
                XHTMLOptions URIResolver = XHTMLOptions.create().URIResolver(new FileURIResolver(file2));
                URIResolver.setExtractor(new FileImageExtractor(file2));
                URIResolver.setIgnoreStylesIfUnused(false);
                URIResolver.setFragment(true);
                XHTMLConverter.getInstance().convert(xWPFDocument, new FileOutputStream(new File(str4 + str3)), URIResolver);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean copyAssetAndWrite(String str, String str2) {
        try {
            File file = new File(str, str2);
            if (file.exists()) {
                if (file.length() > 10) {
                    return true;
                }
            } else if (!file.createNewFile()) {
                return false;
            }
            InputStream open = getAssets().open(str2);
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            byte[] bArr = new byte[1024];
            while (true) {
                int read = open.read(bArr);
                if (read != -1) {
                    fileOutputStream.write(bArr, 0, read);
                } else {
                    fileOutputStream.flush();
                    open.close();
                    fileOutputStream.close();
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
}