Android 加载 自己的H5,跳到内部浏览器

来源:互联网 发布:mac 文件权限 编辑:程序博客网 时间:2024/06/06 02:38



package xxximport android.annotation.SuppressLint;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Message;import android.support.annotation.Nullable;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.ProgressBar;import android.widget.RelativeLayout;import java.util.ArrayList;public class SingleWebViewFragment extends BaseWebViewFragment {    private WebView mWebView;    private ProgressBar mProgressBar;    private String url = "";    private String title = "";    private String shareSp;    private String shareContent;    private ArrayList<String> loadHistoryUrls = new ArrayList<String>();    public SingleWebViewFragment() {    }    private Bundle inputBundle;    @SuppressLint("ValidFragment")    public SingleWebViewFragment(Bundle bundle) {        this.inputBundle = bundle;    }    @Override    protected boolean shouldOverrideUrl(WebView view, String url) {        if (url.startsWith("tel:")) {            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));            startActivity(intent);        } else if (url.startsWith("http:") || url.startsWith("https:")) {            view.loadUrl(url);        }        view.loadUrl(url);        return true;    }    @Override    public void onAttach(Context context) {        super.onAttach(context);    }    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Bundle bundle = getArguments();        if (bundle == null && inputBundle != null) {            bundle = inputBundle;        }        url = bundle.getString(UIHelper.HF_URL_KEY);        title = bundle.getString(UIHelper.HF_TITLE_KEY);        TLog.log("title", title);        //设置数据的操作        BaseActivity activity = (BaseActivity) getCurActivity();        activity.setTitle(title);    }    @Override    protected int getLayoutRes() {        return R.layout.webview_single_page;    }    @Override    protected void initView(View view) {        mWebView = (WebView) view.findViewById(R.id.webView);        mProgressBar = (ProgressBar) view.findViewById(R.id.myProgressBar);        setWebView();    }    @JavascriptInterface    @SuppressLint({"SetJavaScriptEnabled", "JavascriptInterface"})    private void setWebView() {        initWebView(mWebView);        mWebView.setWebChromeClient(new WebChromeClient() {            @Override            public void onProgressChanged(WebView view, int newProgress) {                if (newProgress == 100) {                    mProgressBar.setVisibility(View.GONE);                } else {                    if (View.GONE == mProgressBar.getVisibility()) {                        mProgressBar.setVisibility(View.VISIBLE);                    }                    mProgressBar.setProgress(newProgress);                }                super.onProgressChanged(view, newProgress);            }            @Override            public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {                //h5 targetblank时生效                WebView newWebView = new WebView(getContext());                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);                newWebView.setLayoutParams(params);                WebSettings webSettings = newWebView.getSettings();                webSettings.setJavaScriptEnabled(true);                webSettings.setSupportZoom(false);                webSettings.setBuiltInZoomControls(false);// 设置是否支持缩放                webSettings.setSaveFormData(false);                webSettings.setDefaultTextEncodingName("utf-8");                webSettings.setLoadsImagesAutomatically(true);    //支持自动加载图片                webSettings.setUseWideViewPort(true);    //设置webview推荐使用的窗口,使html界面自适应屏幕                webSettings.setLoadWithOverviewMode(true);                webSettings.setAppCacheEnabled(true);                webSettings.setSupportMultipleWindows(true);                view.addView(newWebView);                WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;                transport.setWebView(newWebView);                resultMsg.sendToTarget();                /*                * true ,则说明由应用的代码处理该 urlWebView 不处理。                *  false,则说明由 WebView 处理该 url,即用 WebView 加载该 url                * */                      return true;            }        });        mWebView.loadUrl(url);        mWebView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                if (url.contains("in")) {                    UIHelper.xxx(getContext());                    return true;                }else if (url.contains("verify")){                    UIHelper.xxx(getContext(), 1);                    return true;                }else {                }                return false;            }        });    }    @Override    protected void onWebViewFailure() {        super.onWebViewFailure();        getActivity().finish();    }    @Override    protected void onWebViewSuccess() {        super.onWebViewSuccess();    }    @Override    public boolean onBackPressed() {        if (mWebView.canGoBack() && TDevice.hasInternet()) {            mWebView.goBack();            return true;//以前是true        }        return super.onBackPressed();    }    @Override    public void onDestroy() {        super.onDestroy();    }}

原创粉丝点击