package cn.koolcloud.ipos.appstore.ui; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.view.KeyEvent; import android.webkit.CookieManager; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import cn.koolcloud.ipos.appstore.R; public class WebViewActivity extends BaseActivity { private WebView webView; private String url = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview_main); url = getIntent().getStringExtra("url"); findViews(); readHtmlFromAssets(); } @Override protected void onDestroy() { super.onDestroy(); // CookieSyncManager cookieSyncManager = // CookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.removeSessionCookie();// remove session. } private void findViews() { // get webview components webView = (WebView) findViewById(R.id.webview); // allow javascript webView.getSettings().setJavaScriptEnabled(true); } private void readHtmlFromAssets() { WebSettings webSettings = webView.getSettings(); webSettings.setSupportZoom(false); webSettings.setUseWideViewPort(true); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); // webSettings.setJavaScriptEnabled(true); // webSettings.setLoadsImagesAutomatically(true); //webView.setBackgroundColor(Color.TRANSPARENT); // set WebView background // color TRANSPARENT webView.setWebViewClient(new MyWebView()); webView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { // Activity and webview decide progression, the progress // disappear when 100% loaded WebViewActivity.this.setProgress(progress * 100); } }); webView.addJavascriptInterface(new JavaScriptInterface(), "android"); // load html files from assets // webView.loadUrl("file:///android_asset/html/index.html"); // webView.loadUrl(url + ":" + port); // webView.loadUrl("http://blog.csdn.net"); webView.loadUrl(url); } Handler mHandler = new Handler(); /*@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) { // webView.goBack(); // showExitDialog(); return false; } return super.onKeyDown(keyCode, event); }*/ /*public void showExitDialog() { new AlertDialog.Builder(this).setTitle(getResources().getString(R.string.msg_cofirm_exit)) .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton(getResources().getString(R.string.btn_cofirm_msg), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // clicking confirm button WebViewActivity.this.finish(); } }).setNegativeButton(getResources().getString(R.string.btn_back_msg), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // nothing to do here } }).show(); // super.onBackPressed(); }*/ /** * @author Administrator deal with clicking hyper link */ class MyWebView extends WebViewClient { // override shouldOverrideUrlLoading method, avoid to open other // browsers when click the hyper link @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); // return true if you don't want to deal the click event on link, // otherwise return false return true; } } final class JavaScriptInterface { JavaScriptInterface() {} /** * this method is invoked by javascript */ public void print(final String jsonObj) { mHandler.post(new Runnable() { public void run() { // Toast.makeText(getApplicationContext(), "Invoked by JS", Toast.LENGTH_LONG).show(); //TODO: call print method //Invoke onJsAndroid method in js by java // webView.loadUrl("javascript:onJsAndroid()"); } }); } public void printQueueNumber(final String jsonObj) { mHandler.post(new Runnable() { public void run() { // Toast.makeText(getApplicationContext(), "Invoked by JS", Toast.LENGTH_LONG).show(); //TODO: call print method } }); } } }