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