http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/WebViewDemo/

我对其进行了修改,并加了简单的注释,这个例子的不仅是对js的操作,它还对android浏览器做了简单的介绍,
这些我会在注释中一一讲解。

Javascript弹出框有如下三种:

Java代码
  1. alert();
  2. window.confirm("Areyousrue?");
  3. window.prompt("Pleaseinputsomeword";,"thisistext");


WebChromeClient 中对三种dialog进行了捕捉,但不幸的是,并没有回调函数可以使用,
或者说不能获得用户是点击“OK”还是“CANCEL”的操作结果。
个人以为,这些方法的设置是为了对一些涉及到html操作的应用程序进行测试时使用的。
在WebChromeClient中还有以下的方法:
Java代码
  1. onProgressChanged(WebViewview,intnewProgress);
  2. onReceivedIcon(WebViewview,Bitmapicon);
  3. onReceivedTitle(WebViewview,Stringtitle);
  4. onRequestFocus(WebViewview);
  5. onCloseWindow(WebViewwindow);
  6. onProgressChanged(WebViewview,intnewProgress)

这些方法的使用我会在以后的博文中讲到.
请大家先看今天讲解的重点
Java代码
  1. publicclassWebViewDemoextendsActivity{
  2. privatestaticfinalStringLOG_TAG="WebViewDemo";
  3. privateWebViewmWebView;
  4. privateTextViewmReusultText;
  5. privateHandlermHandler=newHandler();
  6. @Override
  7. publicvoidonCreate(Bundleicicle){
  8. super.onCreate(icicle);
  9. setContentView(R.layout.main);
  10. //获得浏览器组件
  11. //WebView就是一个简单的浏览器
  12. //android浏览器源码存在于LINUX\android\package\apps\Browser中
  13. //里面的所有操作都是围绕WebView来展开的
  14. mWebView=(WebView)findViewById(R.id.webview);
  15. mReusultText=(TextView)findViewById(R.id.resultText);
  16. //WebSettings几乎浏览器的所有设置都在该类中进行
  17. WebSettingswebSettings=mWebView.getSettings();
  18. webSettings.setSavePassword(false);
  19. webSettings.setSaveFormData(false);
  20. webSettings.setJavaScriptEnabled(true);
  21. webSettings.setSupportZoom(false);
  22. mWebView.setWebChromeClient(newMyWebChromeClient());
  23. /*
  24. *DemoJavaScriptInterface类为js调用android服务器端提供接口
  25. *android作为DemoJavaScriptInterface类的客户端接口被js调用
  26. *调用的具体方法在DemoJavaScriptInterface中定义:
  27. *例如该实例中的clickOnAndroid
  28. */
  29. mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"androd");
  30. mWebView.loadUrl("file:///android_asset/page.html");
  31. }
  32. finalclassDemoJavaScriptInterface{
  33. DemoJavaScriptInterface(){}
  34. /**
  35. *该方法被浏览器端调用
  36. */
  37. publicvoidclickOnAndroid(){
  38. mHandler.post(newRunnable(){
  39. publicvoidrun(){
  40. //调用js中的onJsAndroid方法
  41. mWebView.loadUrl("javascript:onJsAndroid()");
  42. }
  43. });
  44. }
  45. }
  46. /**
  47. *继承WebChromeClient类
  48. *对js弹出框时间进行处理
  49. *
  50. */
  51. finalclassMyWebChromeClientextendsWebChromeClient{
  52. /**
  53. *处理alert弹出框
  54. */
  55. @Override
  56. publicbooleanonJsAlert(WebViewview,Stringurl,
  57. Stringmessage,JsResultresult){
  58. Log.d(LOG_TAG,"onJsAlert:"+message");
  59. mReusultText.setText("Alert:"+message);
  60. //对alert的简单封装
  61. newAlertDialog.Builder(WebViewDemo.this).
  62. setTitle("Alert").setMessage(message).setPositiveButton("OK",
  63. newDialogInterface.OnClickListener(){
  64. @Override
  65. publicvoidonClick(DialogInterfacearg0,intarg1){
  66. //TODO
  67. }
  68. }).create().show();
  69. result.confirm();
  70. returntrue;
  71. }
  72. /**
  73. *处理confirm弹出框
  74. */
  75. @Override
  76. publicbooleanonJsConfirm(WebViewview,Stringurl,Stringmessage,
  77. JsResultresult){
  78. Log.d(LOG_TAG,"onJsConfirm:"+message);
  79. mReusultText.setText("Confirm:"+message);
  80. result.confirm();
  81. returnsuper.onJsConfirm(view,url,message,result);
  82. }
  83. /**
  84. *处理prompt弹出框
  85. */
  86. @Override
  87. publicbooleanonJsPrompt(WebViewview,Stringurl,Stringmessage,
  88. StringdefaultValue,JsPromptResultresult){
  89. Log.d(LOG_TAG,"onJsPrompt:"+message);
  90. mReusultText.setText("Promptinputis:"+message);
  91. result.confirm();
  92. returnsuper.onJsPrompt(view,url,message,message,result);
  93. }
  94. }
  95. }

更多相关文章

  1. Android getResources().getConfiguration()方法的作用
  2. Android 屏幕操作原理
  3. Android读取文件方法总结
  4. H5案例分享:使用JS判断客户端、浏览器、操作系统类型
  5. Android中Intent传递对象的两种方法(Serializable,Parcelable)!
  6. Mac安装android studio后卡在building gradle project info的解
  7. appium 【已解决】Android,每次启动手机中都会安装Appium setting
  8. android 图片压缩的几种方法

随机推荐

  1. Android(安卓)Studio 单刷《第一行代码》
  2. Android应用程序怎么刷到手机上
  3. 学Android的学习规划
  4. Android(安卓)打包签名
  5. Android(安卓)Studio 1.0 苹果电脑安装配
  6. Android数据存取之Databases
  7. Android中RelativeLayout各个属性的含义
  8. android selector 背景选择器的使用, butt
  9. android 权限大全总库
  10. Android(安卓)打造编译时注解解析框架 这