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. 处理返回键,重写ActivityonKeyDown或者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')"/>


WebViewClientWebChromeClient的区别


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.











0 0
原创粉丝点击