`

Android WebView 用法说明

 
阅读更多

WebView是常用的一个控件,下面总结WebView的常用用法。

 

1,设置WebView要显示的页面:

    互联网用:webView.loadUrl("http://www.google.com"); 注意:要写上协议头,不能简单的写成“www.google.com” .否则访问不到。

    本地文件用:webView.loadUrl("file:///android_asset/help.html");  本地文件存放在:assets文件中

 

2,默认情况,如果显示本地页面(如果是TAB选项卡,页面显示在该程序窗口),点击页面中的链接,会打开浏览器窗口。

     如果是互联网页面,(如果是TAB选项卡,页面显示在浏览器窗口)。点击页面中的链接,会打开浏览器窗口。

     也就是说,默认点击链接或WebView是由Android系统的Browser来响应的。但这样就显得在访问浏览器而不是我们的程序。可以做如下设置:

 

	webView = (WebView) findViewById(R.id.webView_help);
//     webView.loadUrl("file:///android_asset/help.html");
	webView.loadUrl("http://www.hao123.com");
	webView.setWebViewClient(new WebViewClient() {
/*shouldOverrideUrlLoading方法指明了在loadUrl的时候,程序应该有怎样的行为。
			 如果是返回false,则url由当前的webview载入,
			 如果是true,则交给当前程序来决定如何处理。*/
	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
  	      return super.shouldOverrideUrlLoading(view, url); // return false  都可以得到自己处理链接响应的问题
//	return true;//则交给当前程序来处理,但是当前程序没有处理,所有页面不会显示。
	}
});

 注意: 

 public boolean shouldOverrideUrlLoading(WebView view, String url) {

    view.loadUrl(url);

    return true;

这个函数我们可以做很多操作,比如我们读取到某些特殊的URL,于是就可以不打开地址,取消这个操作,进行预先定义的其他操作,这对一个程序是非常必要的。

 

3,设置WebView基本信息

   1) 设置触摸焦点起作用

     webView.requestFocus(); (此方法还没测试成功,不太清楚具体用法)

       如果不设置,则点击网页输入框时,不能弹出软键盘,也不响应其他事件

      2) 设置取消滚动条

        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

 

4,WebView 交互 JS

 Webview与js的双向交互才是android的webview强大所在,也是马甲精神能够彻底执行的基础保障。

webView.getSettings().setJavaScriptEnable(true);

 

代码如下: 

<html>
<head>
<script language="JavaScript">
function changeUsername(){
	document.all.username.value="android";
	}

 function callAndroid(){
  var mobile = document.all.tellphone.value;
  document.all.username.value = "mobile";
  androidPhoneObject.call(mobile);
 }	
</script>
</head>
<body>
username <input id="username"><br>
tellPhone <input id="tellphone"><br>
<input type="button" value="Test fun" onClick="changeUsername();">
<input type="button" value="call Phone" onClick="callAndroid();">
<h1><a href="http://www.hao123.com/">好123</a> </h1>
</body>
</html>

点击 按钮Test fun ,能执行js脚步,如不设置,则不起作用。

 

2)Android代码访问Js脚步

// 在android中单击这个button调用网页中的javaScript
	btn = (Button) findViewById(R.id.button1);
	btn.setOnClickListener(new OnClickListener() {
		@Override
		public void onClick(View v) {
			webView.loadUrl("javascript:changeUsername();");
		}
	});

 

3)Js脚步中调用Android代码

// 让javaScript 访问android的功能
Phone phone = new Phone();
// 向javaScript公开phone的功能
webView.addJavascriptInterface(phone, "androidPhoneObject");
// 上面定义的androidPhoneObject对象将来在js脚步中使用

//下面是打电话的操作方法
	final class Phone {
		public void call(String mobile) {
			Uri uri = Uri.parse("tel:" + mobile);
			Intent intent = new Intent(Intent.ACTION_CALL, uri);
			startActivity(intent);
		}
	}

 

5,如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,需要在当前Activity中处理并消费掉该Back事件。

 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {
			webView.goBack();//返回webView的上一页
			return true;
		}
		return false;
	}

 

参考资料:http://blog.csdn.net/chenshijun0101/article/details/7045394

 

分享到:
评论

相关推荐

    Android WebView 去除标题

    可以使用WebView的`addJavascriptInterface`方法添加一个JavaScript接口,然后在网页加载完成后执行JavaScript代码: ```java webView.addJavascriptInterface(new Object() { @JavascriptInterface @android....

    Android webview调用摄像头扫描二维码

    首先,让我们了解Android Webview的基本用法。Webview是Android SDK提供的一种视图组件,它能够加载和显示网页内容。在Android Studio中创建一个新的项目,我们需要在布局XML文件(如activity_main.xml)中添加一个...

    Android Webview滑动监听

    首先,我们要了解`WebView`的基本用法。在Android Studio中,创建一个新的布局XML文件,添加`WebView`组件: ```xml &lt;WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_...

    实例详解Android Webview拦截ajax请求

    Android Webview 拦截 Ajax 请求的详细讲解 Android Webview 提供了页面加载及资源请求的钩子,但是对于 H5 的 Ajax 请求并没有提供干涉的接口。这意味着我们不能在 Webview 中干涉 JavaScript 发起的 HTTP 请求,...

    Android webview加载网页.zip

    这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解如何在Android应用中有效地使用WebView。 WebView的使用涉及到以下几个关键知识点: 1. **WebView组件引入**:在...

    Android WebView H5调用拍照

    在H5页面中,我们可以使用JavaScript来调用Android原生的方法。例如,通过一个按钮触发拍照: ```html &lt;button onclick="window.android.takePhoto()"&gt;拍照 ``` 以上就是Android WebView与H5混合开发中调用拍照...

    通过css注入实现android webview的夜间模式

    然后,在Android应用中,我们需要在Webview加载网页之前或之后,使用`evaluateJavascript()`方法注入这段CSS代码。以下是一个简单的示例: ```java String nightModeCss = "document.head.innerHTML += '&lt;style&gt;...

    Android WebView播放视频(包括全屏播放)

    本文将详细讲解如何在Android的WebView中播放视频,包括全屏播放的实现方法。以下是对该主题的深入探讨: 1. **WebView基础知识**: - WebView是Android SDK提供的一种原生控件,用于加载和显示HTML、CSS和...

    动态设置android webview字体大小DEMO

    然后,为了动态调整字体大小,我们需要实现一个方法,该方法接收一个表示字体大小的参数,并使用JavaScript接口与WebView中的网页进行交互。JavaScript接口可以在Java代码中定义,然后通过`addJavascriptInterface`...

    Android WebView另类实现 自由复制进入选择文字模式

    这里可以使用`window.getSelection()`获取选中的文本,并通过`android.copyText`调用Java方法: ```javascript document.body.addEventListener('mouseup', function() { var selection = window.getSelection()...

    android webview的用法总结

    总的来说,使用Android WebView开发应用时,需要注意性能优化,合理利用Java与JavaScript的交互,以及适配移动设备的触摸事件。同时,了解Android与iOS WebView的差异,可以帮助开发者更好地跨平台开发。通过适当的...

    Android WebView加载网页以及本地图片缓存问题

    3. 清理缓存:当需要清理WebView的缓存时,可以使用以下方法: ```java webView.clearCache(true); // 清除所有缓存,包括磁盘和内存 webView.clearHistory(); // 清除浏览历史 ``` 总结,Android的WebView组件提供...

    android webview input=file 失效解决方案

    在Android开发中,Webview是一个重要的组件,它允许我们在原生应用中内嵌网页内容,提供混合式应用的用户体验。然而,在使用Webview时,有时会遇到一个问题:当HTML页面中包含`&lt;input type="file"&gt;`用于上传文件的...

    android Webview读取网页里的所有图片,并实现点击放大

    要使用WebView,你需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中实例化它,然后调用`loadUrl()`方法加载指定的网页。 ```xml &lt;WebView android:id="@+id/webView" android:layout_width=...

    Android webView拍照与展示相册图片

    要使WebView支持拍照和展示相册功能,我们需要使用Android的相机和图片选择API。以下是如何实现这个功能的步骤: 1. **添加权限**:在AndroidManifest.xml文件中,必须添加相机和读取存储的权限: ```xml ...

    Android下WebView中调用系统相机拍照范例

    `INTERNET`权限允许WebView加载网络资源,`CAMERA`权限允许应用使用设备的摄像头,而`WRITE_EXTERNAL_STORAGE`权限则是为了在SD卡上保存拍摄的照片。 接下来,我们要创建一个自定义的WebView类,扩展`WebViewClient...

    Android webview QQ一键登录并向后台返回参数

    - 为了从WebView中获取登录后的参数(如授权码code),我们需要监听页面加载完成事件并在JavaScript中注入一个函数,该函数负责将参数通过调用Android原生方法传递出来。 - 在Java代码中,创建一个接口供...

    Android WebView cache 缓存 在线 视频播放

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容。而WebView的缓存机制则是提高用户体验、减少网络流量的关键技术之一。本文将详细讲解如何利用WebView实现在线视频播放...

Global site tag (gtag.js) - Google Analytics