| 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); | 
|     } | 
| } |