package com.secondworld.universalsdk; 
 | 
  
 | 
import android.app.Activity; 
 | 
import android.content.ActivityNotFoundException; 
 | 
import android.content.Intent; 
 | 
import android.net.Uri; 
 | 
import android.util.DisplayMetrics; 
 | 
import android.view.View; 
 | 
import android.view.ViewGroup; 
 | 
import android.webkit.WebChromeClient; 
 | 
import android.webkit.WebResourceResponse; 
 | 
import android.webkit.WebView; 
 | 
import android.webkit.WebViewClient; 
 | 
import android.widget.Button; 
 | 
import android.widget.RelativeLayout; 
 | 
  
 | 
import com.secondworld.univeralsdk.R; 
 | 
  
 | 
/** 
 | 
 * Created by Administrator on 2018/8/1 0001. 
 | 
 */ 
 | 
public class WebViewUtil 
 | 
{ 
 | 
    private static Activity m_Activity; 
 | 
    private static String m_ReceivedUrl; 
 | 
    private static WebView m_WebView; 
 | 
    private static Button m_BtnClose; 
 | 
  
 | 
    public static void OpenWebView(final Activity activity, final String url) 
 | 
    { 
 | 
        m_Activity = activity; 
 | 
        m_ReceivedUrl = url; 
 | 
  
 | 
        activity.runOnUiThread(new Runnable() 
 | 
        { 
 | 
            @Override 
 | 
            public void run() 
 | 
            { 
 | 
                if (m_WebView != null && m_WebView.getVisibility() == View.VISIBLE) 
 | 
                { 
 | 
                    processClose(); 
 | 
                    return; 
 | 
                } 
 | 
  
 | 
                DisplayMetrics _dm = new DisplayMetrics(); 
 | 
                m_Activity.getWindowManager().getDefaultDisplay().getMetrics(_dm); 
 | 
                final float _scale = _dm.widthPixels * 1f / 1344; 
 | 
                final int _width = (int) (_scale * 982); 
 | 
                final int _height = (int) (_scale * 560); 
 | 
  
 | 
                m_BtnClose = (Button) m_Activity.findViewById(R.id.webView_btn_close); 
 | 
                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams( 
 | 
                        m_BtnClose.getLayoutParams()); 
 | 
                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams(_margin); 
 | 
                _params.width = 0; 
 | 
                _params.height = 0; 
 | 
                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView); 
 | 
                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView); 
 | 
                m_BtnClose.setLayoutParams(_params); 
 | 
  
 | 
                m_BtnClose.setOnClickListener(new View.OnClickListener() 
 | 
                { 
 | 
                    @Override 
 | 
                    public void onClick(View view) 
 | 
                    { 
 | 
                        processClose(); 
 | 
                    } 
 | 
                }); 
 | 
  
 | 
                m_WebView = (WebView) m_Activity.findViewById(R.id.webView); 
 | 
                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams( 
 | 
                        m_WebView.getLayoutParams()); 
 | 
                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin); 
 | 
                layoutParams.width = 0; 
 | 
                layoutParams.height = 0; 
 | 
                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
 | 
                m_WebView.setLayoutParams(layoutParams); 
 | 
                m_WebView.getSettings().setJavaScriptEnabled(true); 
 | 
                m_WebView.setWebViewClient(new WebViewClient() 
 | 
                { 
 | 
                    @Override 
 | 
                    public void onReceivedError(WebView view, int errorCode, String description, 
 | 
                                                String failingUrl) 
 | 
                    { 
 | 
                        super.onReceivedError(view, errorCode, description, failingUrl); 
 | 
                        view.loadUrl(m_ReceivedUrl); 
 | 
                    } 
 | 
  
 | 
                    @Override 
 | 
                    public boolean shouldOverrideUrlLoading(WebView view, String url) 
 | 
                    { 
 | 
                        if (url.startsWith("http") || url.startsWith("https")) 
 | 
                        { //http和https协议开头的执行正常的流程 
 | 
                            view.loadUrl(url); 
 | 
                            return true; 
 | 
                        } 
 | 
                        else 
 | 
                        {  //其他的URL则会开启一个Acitity然后去调用原生APP 
 | 
                            return super.shouldOverrideUrlLoading(view, url); 
 | 
                        } 
 | 
                    } 
 | 
  
 | 
                    @Override 
 | 
                    public WebResourceResponse shouldInterceptRequest(WebView view, String url) 
 | 
                    { 
 | 
                        if (url.startsWith("http") || url.startsWith("https")) 
 | 
                        { //http和https协议开头的执行正常的流程 
 | 
                            return super.shouldInterceptRequest(view, url); 
 | 
                        } 
 | 
                        else 
 | 
                        {  //其他的URL则会开启一个Acitity然后去调用原生APP 
 | 
                            try 
 | 
                            { 
 | 
                                Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
 | 
                                m_Activity.startActivity(in); 
 | 
                            } catch (ActivityNotFoundException e) 
 | 
                            { 
 | 
                                e.printStackTrace(); 
 | 
                            } 
 | 
                            return null; 
 | 
                        } 
 | 
                    } 
 | 
                }); 
 | 
                m_WebView.setWebChromeClient(new WebChromeClient() 
 | 
                { 
 | 
                    @Override 
 | 
                    public void onReceivedTitle(WebView view, String title) 
 | 
                    { 
 | 
                        if (title.contains("I'm QQ")) 
 | 
                        { 
 | 
                            m_WebView.loadUrl(m_ReceivedUrl); 
 | 
                        } 
 | 
                        super.onReceivedTitle(view, title); 
 | 
                    } 
 | 
  
 | 
                    @Override 
 | 
                    public void onProgressChanged(WebView view, int newProgress) 
 | 
                    { 
 | 
                        if (newProgress == 100) 
 | 
                        { 
 | 
                            if (view.getUrl().contains("noticeweb")) 
 | 
                            { 
 | 
  
 | 
                                ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams( 
 | 
                                        m_WebView.getLayoutParams()); 
 | 
                                RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( 
 | 
                                        margin); 
 | 
                                layoutParams.width = _width; 
 | 
                                layoutParams.height = _height; 
 | 
                                layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, 
 | 
                                                     RelativeLayout.TRUE); 
 | 
                                m_WebView.setLayoutParams(layoutParams); 
 | 
  
 | 
                                ViewGroup.MarginLayoutParams _margin = new ViewGroup.MarginLayoutParams( 
 | 
                                        m_BtnClose.getLayoutParams()); 
 | 
                                RelativeLayout.LayoutParams _params = new RelativeLayout.LayoutParams( 
 | 
                                        _margin); 
 | 
                                _params.width = (int) (180 * _scale); 
 | 
                                _params.height = (int) (72 * _scale); 
 | 
                                _params.rightMargin = (int) (250 * _scale); 
 | 
                                _params.bottomMargin = (int) (10 * _scale); 
 | 
                                _params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.webView); 
 | 
                                _params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.webView); 
 | 
                                m_BtnClose.setLayoutParams(_params); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                }); 
 | 
  
 | 
                m_WebView.loadUrl(m_ReceivedUrl); 
 | 
  
 | 
                m_WebView.setVisibility(View.VISIBLE); 
 | 
                m_BtnClose.setVisibility(View.VISIBLE); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    private static void processClose() 
 | 
    { 
 | 
        m_WebView.clearFocus(); 
 | 
        m_WebView.clearCache(true); 
 | 
        m_WebView.clearHistory(); 
 | 
        m_WebView.clearFormData(); 
 | 
        m_WebView.setVisibility(View.INVISIBLE); 
 | 
        m_BtnClose.setVisibility(View.INVISIBLE); 
 | 
    } 
 | 
} 
 |