標籤:
http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/
我對其進行了修改,並加了簡單的注釋,這個例子的不僅是對js的操作,它還對android瀏覽器做了簡單的介紹,
這些我會在注釋中一一講解。
Javascript彈出框有如下三種:
- alert();
- window.confirm("Are you srue?");
- window.prompt("Please input some word";,"this is text");
WebChromeClient 中對三種dialog進行了捕捉,但不幸的是,並沒有回呼函數可以使用,
或者說不能獲得使用者是點擊“OK”還是“CANCEL”的操作結果。
個人以為,這些方法的設定是為了對一些涉及到html操作的應用程式進行測試時使用的。
在WebChromeClient中還有以下的方法:
- onProgressChanged(WebView view, int newProgress);
- onReceivedIcon(WebView view, Bitmap icon);
- onReceivedTitle(WebView view, String title);
- onRequestFocus(WebView view);
- onCloseWindow(WebView window);
- onProgressChanged(WebView view, int newProgress)
這些方法的使用我會在以後的博文中講到.
請大家先看今天講解的重點
- public class WebViewDemo extends Activity {
-
- private static final String LOG_TAG = "WebViewDemo";
- private WebView mWebView;
- private TextView mReusultText ;
- private Handler mHandler = new Handler();
-
- @Override
- public void onCreate(Bundle icicle) {
-
- super.onCreate(icicle);
- setContentView(R.layout.main);
- //獲得瀏覽器組件
- //WebView就是一個簡單的瀏覽器
- //android瀏覽器源碼存在於LINUX\android\package\apps\Browser中
- //裡面的所有操作都是圍繞WebView來展開的
- mWebView = (WebView) findViewById(R.id.webview);
- mReusultText = (TextView) findViewById(R.id.resultText);
- //WebSettings 幾乎瀏覽器的所有設定都在該類中進行
- WebSettings webSettings = mWebView.getSettings();
- webSettings.setSavePassword(false);
- webSettings.setSaveFormData(false);
- webSettings.setJavaScriptEnabled(true);
- webSettings.setSupportZoom(false);
- mWebView.setWebChromeClient(new MyWebChromeClient());
- /*
- * DemoJavaScriptInterface類為js調用android伺服器端提供介面
- * android 作為DemoJavaScriptInterface類的用戶端介面被js調用
- * 調用的具體方法在DemoJavaScriptInterface中定義:
- * 例如該執行個體中的clickOnAndroid
- */
- mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"androd");
- mWebView.loadUrl("file:///android_asset/page.html");
- }
-
- final class DemoJavaScriptInterface {
- DemoJavaScriptInterface() {}
-
- /**
- * 該方法被瀏覽器端調用
- */
- public void clickOnAndroid() {
- mHandler.post(new Runnable() {
- public void run() {
- //調用js中的onJsAndroid方法
- mWebView.loadUrl("javascript:onJsAndroid()");
- }
- });
- }
- }
-
- /**
- * 繼承WebChromeClient類
- * 對js彈出框時間進行處理
- *
- */
- final class MyWebChromeClient extends WebChromeClient {
-
- /**
- * 處理alert彈出框
- */
- @Override
- public boolean onJsAlert(WebView view,String url,
- String message,JsResult result) {
- Log.d(LOG_TAG,"onJsAlert:"+message");
- mReusultText.setText("Alert:"+message);
- //對alert的簡單封裝
- new AlertDialog.Builder(WebViewDemo.this).
- setTitle("Alert").setMessage(message).setPositiveButton("OK",
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
- //TODO
- }
- }).create().show();
- result.confirm();
- return true;
- }
-
- /**
- * 處理confirm彈出框
- */
- @Override
- public boolean onJsConfirm(WebView view, String url, String message,
- JsResult result) {
- Log.d(LOG_TAG, "onJsConfirm:"+message);
- mReusultText.setText("Confirm:"+message);
- result.confirm();
- return super.onJsConfirm(view, url, message, result);
- }
-
- /**
- * 處理prompt彈出框
- */
- @Override
- public boolean onJsPrompt(WebView view, String url, String message,
- String defaultValue, JsPromptResult result) {
- Log.d(LOG_TAG,"onJsPrompt:"+message);
- mReusultText.setText("Prompt input is :"+message);
- result.confirm();
- return super.onJsPrompt(view, url, message, message, result);
- }
- }
- }
分類: Android 好文要頂 關注我 收藏該文 OAKPIP
關注 - 10
粉絲 - 40 +加關注40 (請您對文章做出評價) « 上一篇:Android-----WebView使用
» 下一篇:Android-----RelativeLayout屬性
Android-----js和android的互調