WebView总结
来源:互联网 发布:通信网络性能指标 编辑:程序博客网 时间:2024/06/07 04:07
以前一直没有用到WebView. 抽空总结了一下WebView的简单使用.
1. 添加权限
<uses-permission android:name="android.permission.INTERNET" />
2. 添加JavaScript支持
myWebView.getSettings().setJavaScriptEnabled(true);
3. 自己处理链接,为WebView添加一个事件监听对象(WebViewClient),
并可重写其publicbooleanshouldOverrideUrlLoading(WebView view, String url)方法处理对应网页中的超链接
mWebView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url.indexOf("tel:") < 0)mWebView.loadUrl(url);elsestartActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));return true;}});
4. 处理返回键,重写Activity的onKeyDown或者onBackPressed方法
@Overridepublic void onBackPressed() {if (mWebView.canGoBack())mWebView.goBack();elsesuper.onBackPressed();}
5. 通过file:///android_asset/demo.html指定对应asset目录下的网页,加载本地网页
6. S的对话框,通过setWebChromeClient()方法,重写publicboolean onJsAlert(WebView view, String url, Stringmessage,final JsResult result),publicboolean onJsConfirm(WebView view, String url, Stringmessage,final JsResult result),publicboolean onJsPrompt(WebView view, String url, Stringmessage, String defaultValue,final JsPromptResultresult)方法.
Java调用JS方法
mWebView.loadUrl("javascript:alertJava('Call JS by Java!')");
<script type="text/javascript"> function alertJava(str){ alert(str); }</script>
JS调用Java
mWebView.addJavascriptInterface(new JsToJava() {private static final String TAG = "JsToJava";@JavascriptInterfacepublic void logJS(String paramFromJS) {Log.i(TAG, paramFromJS);}}, "stub");
<input type="button" value="callJava" onclick="window.stub.logJS('call Java form JS')"/>
WebViewClient与WebChromeClient的区别
WebViewClient主要帮助WebView处理各种通知、请求事件的,比如:
publicboolean shouldOverrideUrlLoading(WebView view, String url)
publicvoid onLoadResource(WebView view, String url)
publicvoid onPageStarted(WebView view, String url, Bitmap favicon)
publicvoid onPageFinished(WebView view, String url)
publicvoid onReceivedError(WebView view,interrorCode, String description, String failingUrl)
publicvoid onReceivedHttpAuthRequest(WebView view, HttpAuthHandlerhandler, String host, String realm)
WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等比如
publicvoid onCloseWindow(WebView window)
publicboolean onCreateWindow(WebView view,booleanisDialog,boolean isUserGesture, android.os.Message resultMsg)
publicboolean onJsAlert(WebView view, String url, String message,JsResult result)
publicboolean onJsPrompt(WebView view, String url, String message,String defaultValue, JsPromptResult result)
publicboolean onJsConfirm(WebView view, String url, String message,JsResult result)
publicvoid onProgressChanged(WebView view,intnewProgress)
publicvoid onReceivedIcon(WebView view, Bitmap icon)
publicvoid onReceivedTitle(WebView view, String title)
若只是用来处理一些html的页面内容,只用WebViewClient就行了,若需更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient.
- webview总结
- WebView总结
- webview总结
- webView 总结
- webview总结
- WebView总结
- WebView总结
- WebView总结
- WebView总结
- WebView总结
- Webview总结
- webview总结
- WebView总结
- Webview总结
- WebView总结
- WebView总结
- WebView总结
- WebView总结
- 服务器端防止Form表单重复提交
- C++创建对象的两种方法
- 你的单元测试有多稳定?提升自动测试质量的最佳实践
- error code 121:The semaphore timeout period has expired.
- IOS tableView的重用机制
- WebView总结
- 常见MIME类型
- IBM Flex System Enterprise Chassis
- request.getScheme() 使用方法
- 前端研发生态环境构建经验谈
- glassfish服务器
- python 读写文件编码处理问题
- 这个项目要多久开发完成?
- OBJECTIVE-C内存管理