WebView总结

以前一直没有用到WebView. 抽空总结了一下WebView的简单使用.


1. 添加权限

	<uses-permission android:name="android.permission.INTERNET" />

2. 添加JavaScript支持

	myWebView.getSettings().setJavaScriptEnabled(true);

3. 自己处理链接,WebView添加一个事件监听对象(WebViewClient),

并可重写其public booleanshouldOverrideUrlLoading(WebView view, String url)方法处理对应网页中的超链接

	mWebView.setWebViewClient(new WebViewClient() {
		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {
			if (url.indexOf("tel:") < 0)
				mWebView.loadUrl(url);
			else
				startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
			return true;
		}
	});

4. 处理返回键,重写ActivityonKeyDown或者onBackPressed方法

	@Override
	public void onBackPressed() {
		if (mWebView.canGoBack())
			mWebView.goBack();
		else
			super.onBackPressed();
	}

5. 通过file:///android_asset/demo.html指定对应asset目录下的网页,加载本地网页

6. S的对话框,通过setWebChromeClient()方法,重写public boolean onJsAlert(WebView view, String url, Stringmessage, final JsResult result),public boolean onJsConfirm(WebView view, String url, Stringmessage, final JsResult result),public boolean 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";
		@JavascriptInterface
		public void logJS(String paramFromJS) {
			Log.i(TAG, paramFromJS);
		}
	}, "stub");

	<input type="button" value="callJava" οnclick="window.stub.logJS('call Java form JS')"/>


WebViewClientWebChromeClient的区别


WebViewClient主要帮助WebView处理各种通知、请求事件的,比如:


public boolean shouldOverrideUrlLoading(WebView view, String url)


public void onLoadResource(WebView view, String url)


public void onPageStarted(WebView view, String url, Bitmap favicon)


public void onPageFinished(WebView view, String url)


public void onReceivedError(WebView view, interrorCode, String description, String failingUrl)


public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandlerhandler, String host, String realm)


 

WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等比如


public void onCloseWindow(WebView window)


public boolean onCreateWindow(WebView view, booleanisDialog, boolean isUserGesture, android.os.Message resultMsg)


public boolean onJsAlert(WebView view, String url, String message,JsResult result)


public boolean onJsPrompt(WebView view, String url, String message,String defaultValue, JsPromptResult result)


public boolean onJsConfirm(WebView view, String url, String message,JsResult result)


public void onProgressChanged(WebView view, intnewProgress)


public void onReceivedIcon(WebView view, Bitmap icon)


public void onReceivedTitle(WebView view, String title) 


只是用来处理一些html的页面内容,只用WebViewClient就行了,若需更丰富的处理效果,比如JS进度条等,就要用到WebChromeClient.











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值