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
相关推荐
可以使用WebView的`addJavascriptInterface`方法添加一个JavaScript接口,然后在网页加载完成后执行JavaScript代码: ```java webView.addJavascriptInterface(new Object() { @JavascriptInterface @android....
首先,让我们了解Android Webview的基本用法。Webview是Android SDK提供的一种视图组件,它能够加载和显示网页内容。在Android Studio中创建一个新的项目,我们需要在布局XML文件(如activity_main.xml)中添加一个...
首先,我们要了解`WebView`的基本用法。在Android Studio中,创建一个新的布局XML文件,添加`WebView`组件: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_...
Android Webview 拦截 Ajax 请求的详细讲解 Android Webview 提供了页面加载及资源请求的钩子,但是对于 H5 的 Ajax 请求并没有提供干涉的接口。这意味着我们不能在 Webview 中干涉 JavaScript 发起的 HTTP 请求,...
这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解如何在Android应用中有效地使用WebView。 WebView的使用涉及到以下几个关键知识点: 1. **WebView组件引入**:在...
在H5页面中,我们可以使用JavaScript来调用Android原生的方法。例如,通过一个按钮触发拍照: ```html <button onclick="window.android.takePhoto()">拍照 ``` 以上就是Android WebView与H5混合开发中调用拍照...
然后,在Android应用中,我们需要在Webview加载网页之前或之后,使用`evaluateJavascript()`方法注入这段CSS代码。以下是一个简单的示例: ```java String nightModeCss = "document.head.innerHTML += '<style>...
本文将详细讲解如何在Android的WebView中播放视频,包括全屏播放的实现方法。以下是对该主题的深入探讨: 1. **WebView基础知识**: - WebView是Android SDK提供的一种原生控件,用于加载和显示HTML、CSS和...
然后,为了动态调整字体大小,我们需要实现一个方法,该方法接收一个表示字体大小的参数,并使用JavaScript接口与WebView中的网页进行交互。JavaScript接口可以在Java代码中定义,然后通过`addJavascriptInterface`...
这里可以使用`window.getSelection()`获取选中的文本,并通过`android.copyText`调用Java方法: ```javascript document.body.addEventListener('mouseup', function() { var selection = window.getSelection()...
总的来说,使用Android WebView开发应用时,需要注意性能优化,合理利用Java与JavaScript的交互,以及适配移动设备的触摸事件。同时,了解Android与iOS WebView的差异,可以帮助开发者更好地跨平台开发。通过适当的...
3. 清理缓存:当需要清理WebView的缓存时,可以使用以下方法: ```java webView.clearCache(true); // 清除所有缓存,包括磁盘和内存 webView.clearHistory(); // 清除浏览历史 ``` 总结,Android的WebView组件提供...
在Android开发中,Webview是一个重要的组件,它允许我们在原生应用中内嵌网页内容,提供混合式应用的用户体验。然而,在使用Webview时,有时会遇到一个问题:当HTML页面中包含`<input type="file">`用于上传文件的...
要使用WebView,你需要在布局XML文件中添加WebView组件,并在对应的Activity或Fragment中实例化它,然后调用`loadUrl()`方法加载指定的网页。 ```xml <WebView android:id="@+id/webView" android:layout_width=...
要使WebView支持拍照和展示相册功能,我们需要使用Android的相机和图片选择API。以下是如何实现这个功能的步骤: 1. **添加权限**:在AndroidManifest.xml文件中,必须添加相机和读取存储的权限: ```xml ...
`INTERNET`权限允许WebView加载网络资源,`CAMERA`权限允许应用使用设备的摄像头,而`WRITE_EXTERNAL_STORAGE`权限则是为了在SD卡上保存拍摄的照片。 接下来,我们要创建一个自定义的WebView类,扩展`WebViewClient...
- 为了从WebView中获取登录后的参数(如授权码code),我们需要监听页面加载完成事件并在JavaScript中注入一个函数,该函数负责将参数通过调用Android原生方法传递出来。 - 在Java代码中,创建一个接口供...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容。而WebView的缓存机制则是提高用户体验、减少网络流量的关键技术之一。本文将详细讲解如何利用WebView实现在线视频播放...