public classAlipayWebActivity extends Activity {privateWebView mWebView;privateProgressDialog mProgressDialog;private static final String TAG = "AlipayWebActivity";protected static final int PAY_SUCCESS = 20;protected static final int LOAD_FINISH_CODE = 40;private static final int DEFAULT_CODE = 50;privateImageView quitImageView;public voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
FactoryUtil.getInstance().addActivity(this);
quitImageView=(ImageView) findViewById(R.id.iv_quit);
mWebView=(WebView) findViewById(R.id.webview);
mWebView.setBackgroundColor(0);
initial();
quitImageView.setOnClickListener(newMyOnClickListener());
}
@SuppressLint({"SetJavaScriptEnabled", "HandlerLeak"})
@TargetApi(Build.VERSION_CODES.HONEYCOMB)private voidinitial() {
String url= getIntent().getStringExtra("url");
LogUtil.i(TAG, url);
WebSettings webSettings=mWebView.getSettings();
mWebView.requestFocus();
webSettings.setJavaScriptEnabled(true);
mWebView.setFocusable(true);
webSettings.setBuiltInZoomControls(true);
mWebView.setScrollBarStyle(0);if (MobileUtil.getMobileVersion()>11) {
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
}
mWebView.setWebChromeClient(newWebChromeClient() {public void onProgressChanged(WebView view, intnewProgress) {
LogUtil.i(TAG,"newProgress:" +newProgress);if (newProgress == 100 && mProgressDialog!=null) {
mProgressDialog.dismiss();
}
super.onProgressChanged(view, newProgress);
}
});
mWebView.setWebViewClient(newWebViewClient() {publicboolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtil.i(TAG,"URL :" +url);
LogUtil.i(TAG,"URL :" + url.contains("&cmd=success&"));
loadUrl(view, url);return true;//停止在当前界面
}public voidonPageFinished(WebView view, String url) {
LogUtil.i(TAG,"onPageFinished" +url);//trade_status : TRADE_FINISHED,成功之后处理super.onPageFinished(view, url);
}public voidonPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
LogUtil.i(TAG,"onPageStarted" +url);
}
});
loadUrl(mWebView, url);
}
@SuppressLint("HandlerLeak")private Handler mUihandler = newHandler() {public voidhandleMessage(Message msg) {switch(msg.what) {casePAY_SUCCESS:
clearCache();
FactoryUtil.getInstance().exit();break;caseLOAD_FINISH_CODE:if (mProgressDialog != null &&mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
}break;caseDEFAULT_CODE:
showProgressDialog(AlipayWebActivity.this,
R.string.dialog_loading);
}
super.handleMessage(msg);
}
};private voidloadUrl(final WebView webView, final String url) {
mUihandler.sendEmptyMessage(DEFAULT_CODE);
webView.loadUrl(url);
}public boolean onKeyDown(int keyCode, KeyEvent event) {
LogUtil.i(TAG,"can goback:" +mWebView.canGoBack());if (keyCode == KeyEvent.KEYCODE_BACK &&mWebView.canGoBack()) {
mWebView.goBack();return true;
}else if (keyCode ==KeyEvent.KEYCODE_BACK) {
onBackPressed();return true;
}return super.onKeyDown(keyCode, event);
}public void showProgressDialog(Context context, intmessage) {if (mProgressDialog == null) {
mProgressDialog= newProgressDialog(context);
mProgressDialog.setMessage(context.getText(message));
mProgressDialog.show();
}
}private voidclearCache() {
mWebView.clearCache(true);
mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
finish();
}private classMyOnClickListener implements OnClickListener{
@Overridepublic voidonClick(View v) {int id =v.getId();if (id==R.id.iv_quit) {
finish();
}
}
}
}