WebViewFragment.java 2.86 KB
package com.polysoft.nafmii.fragment;

import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.ValueCallback;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.polysoft.nafmii.R;
import com.polysoft.nafmii.webview.JavaToJsinterface;
import com.polysoft.nafmii.webview.JsToJavaInterface;
import com.polysoft.nafmii.webview.MyWebViewClient;
import com.polysoft.nafmii.webview.WebviewLoadListener;
import com.polysoft.nafmii.webview.X5WebviewUtils;
import com.tencent.smtt.sdk.WebView;


public class WebViewFragment extends Fragment implements WebviewLoadListener {

    private View rootView;
    private ViewGroup layout;
    private WebView webView;

    public static WebViewFragment newInstances(String url) {
        WebViewFragment fragment = new WebViewFragment();
        Bundle bundle = new Bundle();
        bundle.putString("url", url);
        fragment.setArguments(bundle);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        if (null == this.rootView) {
            this.rootView = inflater.inflate(R.layout.fragment_webview, container, false);
        }
        return this.rootView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        this.layout = view.findViewById(R.id.webview_layout);

        this.initWebview();
    }


    private void initWebview() {
        WebView webView = X5WebviewUtils.create(getActivity());
        webView.setWebViewClient(new MyWebViewClient(this));
        JsToJavaInterface nativeApi = new JsToJavaInterface(getActivity(), new JavaToJsinterface(webView));
        webView.addJavascriptInterface(nativeApi, "$NativeApi");

        this.layout.removeAllViews();
        int match = ViewGroup.LayoutParams.MATCH_PARENT;
        this.layout.addView(webView, new ViewGroup.LayoutParams(match, match));

        this.webView = webView;

        Bundle bundle = getArguments();
        String url = bundle.getString("url", "");
        this.webView.loadUrl(url);

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        X5WebviewUtils.destroy(this.webView);
    }

    @Override
    public void onWebviewLoad(int type, Object param) {
        if (type == WebviewLoadListener.TYPE_FINISH) {

        } else if (type == WebviewLoadListener.TYPE_ERROR) {

        }
    }

    @Override
    public void onShowFileChooser(ValueCallback<Uri[]> filePathCallback, String[] acceptTypes, boolean isCapture) {

    }
}