在开发过程中应该注意几点:
1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。
2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
3.如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖 webview的WebViewClient对象。
mWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
4.如果不做任何处理,浏览网页,点击系统“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览的网 页回退而不是推出浏览器,需要在当前Activity中处理并消费掉该Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
下一步让我们来了解一下android中webview是如何支持javascripte自定义对象的,在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。
看一个实例:
view plaincopy to clipboardprint?
01.public class WebViewDemo extends Activity {
02. private WebView mWebView;
03. private Handler mHandler = new Handler();
04.
05. public void onCreate(Bundle icicle) {
06. super.onCreate(icicle);
07. setContentView(R.layout.webviewdemo);
08. mWebView = (WebView) findViewById(R.id.webview);
09. WebSettings webSettings = mWebView.getSettings();
10. webSettings.setJavaScriptEnabled(true);
11. mWebView.addJavascriptInterface(new Object() {
12. public void clickOnAndroid() {
13. mHandler.post(new Runnable() {
14. public void run() {
15. mWebView.loadUrl("javascript:wave()");
16. }
17. });
18. }
19. }, "demo");
20. mWebView.loadUrl("file:///android_asset/demo.html");
21. }
22.}
我们看addJavascriptInterface(Object obj,String interfaceName)这个方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。
<html>
<mce:script language="javascript"><!--
function wave() {
document.getElementById("droid").src="android_waving.png";
}
// --></mce:script>
<body>
<a onClick="window.demo.clickOnAndroid()">
<img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>
Click me!
</a>
</body>
</html>
这样在javascript中就可以调用java对象的clickOnAndroid()方法了,同样我们可以在此对象中定义很多方法(比 如发短信,调用联系人列表等手机系统功能。),这里wave()方法是java中调用javascript的例子。
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。
分享到:
相关推荐
本文将详细讲解如何在Android Webview中调用摄像头进行二维码扫描,并结合ZXing(Zebra Crossing)解析包进行二维码的解析。 首先,让我们了解Android Webview的基本用法。Webview是Android SDK提供的一种视图组件...
在Android应用开发中,WebView是一个非常重要的组件,它允许我们加载和显示网页内容。这篇教程将详细介绍如何在Android中利用WebView来调用H5页面,从而实现摄像头扫描二维码的功能。 首先,我们需要理解WebView的...
【Android-WebView:深入解析Android Webview源码】 Android Webview是Android系统中一个非常重要的组件,它允许开发者在应用程序内部加载和展示网页内容。尽管给出的标题提示这个资源可能已过时,但理解Webview的...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中嵌入网页内容。在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验...
首先,加载PDF到Webview的基本步骤是通过WebView加载一个可以解析并显示PDF的URL。一个常见的方法是使用Google的PDF Viewer,它提供了一个在线的PDF渲染服务。我们可以通过以下代码将PDF文档的URL加载到Webview: `...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在APP内部加载并显示网页内容。这个源码示例展示了如何在WebView中调用H5页面,并利用Android原生的摄像头功能来扫描二维码,实现二维码识别。下面...
以上就是“Android解析XML并使用WebView显示”的主要技术点,开发者需要理解并掌握这些知识点,才能在实际项目中顺利实现这一功能。通过不断实践和学习,我们可以更好地理解和运用这些工具,提升应用的质量和用户...
在Android应用开发中,...以上就是关于Android中WebView与原生界面交互以及二维码扫描功能实现的详细解析。通过这些知识,你可以构建一个既能展示网页内容,又能够进行原生交互,同时具备扫描二维码功能的Android应用。
// 解析并处理URL,执行相应的Android逻辑 return true; } return super.shouldOverrideUrlLoading(view, url); } }); ``` 综上所述,Android的WebView组件通过与HTML+JavaScript的交互,为开发者提供了丰富的...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,而无需离开应用。WebView实质上就是一个轻量级的浏览器内核,基于WebKit引擎,能够解析和展示HTML、CSS以及JavaScript...
在Android开发中,Webview是一个非常重要的组件,它允许我们加载和显示网页内容,甚至执行JavaScript代码。在本文中,我们将深入探讨如何在Android应用中使用Webview与JavaScript结合生成图表,这通常用于数据可视化...
【Android基于WebView的手机浏览器源码解析】 在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序中内嵌网页浏览功能。本项目“Android基于WebView的手机浏览器源码”提供了一个简单实用的实现...
**Android WebView 深度解析** 在Android应用开发中,`WebView`是一个非常重要的组件,它允许开发者在应用程序内部加载和显示网页内容。这个组件极大地拓宽了应用的功能,使得开发者可以将网页应用与原生应用的功能...
本篇文章将深入探讨如何在Android应用中利用`WebView`来解析并展示PDF文件。 首先,我们要明确,`WebView`本身并不直接支持PDF的渲染,但可以通过两种主要方式实现这一功能:1) 使用Google的`WebChromeClient`和`...
在Android开发中,Webview是一个非常重要的组件,它允许我们加载和展示网页内容。而有时候,我们希望在用户长按Webview中的二维码图片时能够自动识别并解析二维码,这一功能可以极大提升用户体验。本文将详细讲解...
本文将深入探讨`Android webview`的相关知识点,并结合提供的代码示例进行详细解析。 首先,WebView的基本使用涉及到以下几个关键步骤: 1. **导入依赖**:在Android Studio的`build.gradle`文件中,确保添加了`...
在Android开发中,有时我们需要在应用内部展示PDF文件,而Webview是一个常用的选择。Webview不仅可以加载HTML页面,还可以通过JavaScript接口与Android原生代码交互,实现更多功能。本教程将详细讲解如何在Android的...
在Android开发中,Webview通常被用来加载网页内容并实现应用程序与网页之间的交互。然而,有时我们可能有需求在不依赖Webview的情况下实现Android应用与JavaScript的交互。本文将深入探讨这种非Webview方式的交互...
在Android开发中,WebView是一个非常重要的组件,它允许我们在原生应用中内嵌网页内容,实现混合式开发。本文将详细讲解如何在Android的WebView中实现图片上传功能,并与HTML5 JavaScript进行交互。 1. **WebView...
MarkdownView是Android开发中一种用于显示Markdown格式文本的WebView实现,它允许开发者在应用程序中方便地展示用Markdown语法编写的文档,同时提供了丰富的定制化选项。Markdown是一种轻量级的标记语言,它允许人们...