package com.parttime.common.activity;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.WebBackForwardList;
import android.webkit.WebChromeClient;
import android.webkit.WebHistoryItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageButton;
import android.widget.TextView;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.parttime.base.WithTitleActivity;
import com.qingmu.jianzhidaren.R;
/**
* Created by cjz on 2015/8/8.
*/
public class WebBrowserActivity extends WithTitleActivity{
public static final String EXTRA_URL = "extra_url";
@ViewInject(R.id.webvi_main)
protected WebView webView;
private String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_web_browser);
ViewUtils.inject(this);
super.onCreate(savedInstanceState);
getIntentData(getIntent());
load();
}
private void load(){
if(url != null && !url.startsWith("http://") && !url.startsWith("https://")){
url = "http://" + url;
}
webView.loadUrl(url);
}
private void getIntentData(Intent intent){
url = intent.getStringExtra(EXTRA_URL);
}
@Override
protected void initViews() {
super.initViews();
left(ImageButton.class, R.drawable.back, new View.OnClickListener() {
@Override
public void onClick(View v) {
goBack();
}
});
initWebView();
}
private void initWebView(){
setDisplay(webView);
setZoomEnable(webView);
setMediaEnable(webView);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new MyWebChromeClient());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void goBack() {
if (webView.canGoBack()) {
webView.goBack();
WebBackForwardList webBackForwardList = webView.copyBackForwardList();
WebHistoryItem itemAtIndex = webBackForwardList.getCurrentItem();
} else {
super.finish();
}
}
@Override
protected ViewGroup getLeftWrapper() {
return null;
}
@Override
protected ViewGroup getRightWrapper() {
return null;
}
@Override
protected TextView getCenter() {
return null;
}
private void setDisplay(WebView webView) {
WebSettings settings = webView.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
}
private void setZoomEnable(WebView webView) {
WebSettings settings = webView.getSettings();
settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
}
@SuppressLint("SetJavaScriptEnabled")
private void setMediaEnable(WebView webView) {
WebSettings settings = webView.getSettings();
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
settings.setMediaPlaybackRequiresUserGesture(true); //需要api-17以上才能支持。
}
} catch (Error e) {
e.printStackTrace();
}
settings.setPluginState(WebSettings.PluginState.ON_DEMAND);
settings.setJavaScriptEnabled(true);
}
private class MyWebChromeClient extends WebChromeClient {
@Override
public void onReceivedTitle(WebView view, String title) {
// mIsURLLoadFinish = true;
// mTitleInitializer.changeCenter(title);
center(title);
}
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
builder.setTitle("提示").setMessage(message).setPositiveButton("确定", null);
result.confirm();
if (!WebBrowserActivity.this.isFinishing()) {
builder.show();
}
return true;
}
}
}