- 浏览: 46630 次
- 性别:
- 来自: 北京
最新评论
-
hyc429559515:
我试过,可以啊!,请发个不可以的例子,不要误导啊!
Android中aidl接口不可初始化handler -
hubenshan:
有没有更深一层的,这个层面的东西多了~
webview使用概述
大部分内容为网上整理其它高人的帖子,现只作整理,用于查看:
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件。
什么是webkit
WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。
传统上,WebKit包含一个网页引擎WebCore和一个脚本引擎JavaScriptCore,它们分别对应的是KDE的KHTML和KJS。不过, 随着JavaScript引擎的独立性越来越强,现在WebKit和WebCore已经基本上混用不分(例如Google Chrome和Maxthon 3采用V8引擎,却仍然宣称自己是WebKit内核)。
这里我们初步体验一下在android是使用webview浏览网页,在SDK的Dev Guide中有一个WebView的简单例子 。
在开发过程中应该注意几点:
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?
public class WebViewDemo extends Activity {
private WebView mWebView;
private Handler mHandler = new Handler();
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.webviewdemo);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.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>
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。
发表评论
-
Android Studio mac快捷键
2015-09-16 15:22 826首先mac有几个功能键和win平台是不一样的,对应如下: ... -
android查看签名
2015-07-17 20:47 6241、查看签名 keytool -printcert -fi ... -
android sdk命令行update
2015-07-17 19:27 919新版本安卓已经修改了使用方式,更简单了,直接使用sdkma ... -
sqlite3添加字段
2014-09-28 15:05 1484开发中,需要在已有的数据库表上新增字段,可使用以下语句: ... -
Android中aidl接口不可初始化handler
2014-09-02 12:17 1159开发中发现,在aidl接口中初始化一个handler,会无法 ... -
Android中自定义view的drawTex背景变黑的问题
2014-08-20 19:23 936开发中发现,在自定义view中使用canvas.drawTe ... -
自定义LengthFilter
2014-08-19 20:43 975转载 字符判断若只判断中文可以考虑用位运算提高处理 ... -
Android实战技巧:深入解析AsyncTask(转)
2014-06-04 12:26 817转自 http://blog.csdn.net/h ... -
Android涉及到的设计模式(转载)
2014-05-13 10:00 731转自 http://blog.csdn.net/dengsh ... -
android签名命令
2014-04-09 12:07 6141、打完包后签名 jarsigner -verbose ... -
Note: log switch off, only log_main and log_events will have logs!
2014-03-24 20:15 3950android程序一直提示:已停止运行,想看下Logcat发 ... -
checkbox中drawablePadding不起作用
2014-03-13 11:49 2302开发中发现用android:button更换checkbo ... -
(转) Installation error: INSTALL_FAILED_MEDIA_UNAVAILABLE
2013-11-01 17:52 666使用eclipse编译程序,然后在android手机上运行,报 ... -
[转发] ubuntu 12.04 安装 gcc 4.4
2013-10-18 17:02 2461ubuntu 12.04的gcc版本是4.6.3,版本太高, ... -
Android开发之OpenGL+ES教程(转)
2013-08-18 22:01 1461OpenGL ES Tutorial for Android ... -
android opengl es总结(转)
2013-08-18 18:33 1914什么是OpenGL ES? OpenGL ES (为O ... -
Android垃圾收集分类
2013-04-09 12:06 9141、GC_FOR_ALLOC:发生在堆被占满不能进行 ... -
notification通过intent传递参数到activity
2011-08-09 15:30 5999项目开发中遇到以下问题,需要在一个Activity中显示不同的 ...
相关推荐
- **WebView优化**:启用硬件加速,使用`setLayerType(View.LAYER_TYPE_HARDWARE, null)`提高WebView渲染速度。 - **离线存储**:通过Service Worker和Cache API实现离线缓存,提升离线场景下的用户体验。 - **代码...
#### 一、WebView概述与特性 WebView是Android SDK中的一个重要组件,它基于WebKit渲染引擎,允许在应用内部加载和显示网页。WebKit最初是苹果公司在KDE的KHTML基础上开发的,其核心包括WebCore(HTML解释器)和...
一、Webview缓存概述 Webview的缓存机制主要包括两种类型:内存缓存(Memory Cache)和磁盘缓存(Disk Cache)。内存缓存用于临时存储最近访问过的网页数据,当用户再次访问时可以从内存中快速加载。磁盘缓存则将...
### WebView开发概述 在深入探讨WebView的开发细节之前,我们首先需要明确WebView的基本概念及其重要性。WebView是一种基于Web技术的视图组件,允许开发者在移动应用中嵌入网页内容。这种技术广泛应用于Android和...
1. Webview概述:Webview是Android SDK中的一个组件,属于com.android.webkit包。它本质上是一个浏览器引擎,能够解析和渲染HTML、CSS、JavaScript等网页内容,为用户提供在原生应用内部浏览网页的能力。 2. 添加...
一、WebView概述 WebView是Android系统提供的一个内置控件,它基于Chromium项目,实现了对HTML、CSS、JavaScript等网页内容的支持。通过WebView,开发者可以将网页嵌入到原生应用中,提供丰富的用户体验,同时还能...
`WebView`使用WebKit渲染引擎来解析并显示网页。 #### 权限配置 为了使应用能够通过`WebView`访问互联网及加载网页内容,必须在`AndroidManifest.xml`文件中添加以下权限: ```xml ``` #### 类结构 `WebView`...
#### 一、概述与基本概念 WebView是Android系统中的一个强大组件,它能够将Web页面嵌入到应用程序中,为开发者提供了将Web技术与原生应用结合的能力。WebView不仅可以加载和显示HTML网页,还可以执行JavaScript脚本...
以上是对WebView基本使用的一个概述,`MyWebView`源码将更深入地展示实际操作和更多高级特性,如缓存策略、Cookie管理、自定义加载器等。通过分析源码,你可以学习到更多实用技巧,并应用于自己的项目中。
接下来,在Activity中设置WebView并使用自定义的WebChromeClient: ```java public class MainActivity extends AppCompatActivity { private WebView webView; private ValueCallback[]> mFilePathCallback; @...
1. **WebView2概述** - WebView2是Microsoft Edge Chromium的嵌入式版本,提供了一种在桌面应用中展示Web内容的方式。 - 它取代了之前的EdgeHTML-based WebView,提供更好的性能和更广泛的标准支持。 - 支持跨...
调试WebView问题时,可以使用WebView的log输出、Chrome DevTools远程调试等工具。 9. **文件解析**:"JavaApk源码说明.txt"可能是对源码的简要说明,提供了代码结构和功能的概述;"下载更多打包源码~.url"可能是...
### WebView概述 WebView是Android和iOS系统中的一个组件,它能够加载和显示HTML、CSS、JavaScript等Web内容。通过JavaScript接口,WebView可以与Java或Swift代码进行交互,实现一些原生功能,如网络请求、用户授权...
本篇内容主要针对初学者介绍WebView的基本使用及其与JavaScript和Android平台之间的交互机制。通过详细解释WebView的基本配置、权限设置、事件监听、JavaScript支持等内容,帮助读者更好地掌握WebView在Android应用...
若已有提供天气预报的可靠网页,使用WebView是一种简单快速的方法。以下步骤概述了如何实现: 1. **添加WebView组件**:在布局XML文件中添加WebView,并为其设置id以便在代码中引用。 2. **初始化WebView**:在...
一、WebView概述 WebView是Android SDK提供的一种内置视图组件,它可以直接加载和显示HTML、CSS和JavaScript等Web内容。通过WebView,开发者可以将网页内容嵌入到Android应用中,用户可以在不离开应用的情况下查看...
使用`setWebViewClient`方法可以让WebView处理所有的链接点击事件,并且可以在当前WebView中打开这些链接。例如: ```java wv.setWebViewClient(new WebViewClient() { @Override public boolean ...
#### 二、WebView基础概述 **1. 创建与初始化** 在Android应用中使用WebView,首先需要在项目的`AndroidManifest.xml`文件中声明网络权限: ```xml ``` 随后,在需要使用WebView的Activity中创建WebView实例并设置...
1. WebView概述:WebView是Android和iOS系统提供的一个组件,用于在应用内部显示HTML、CSS和JavaScript内容。它本质上是一个内置的浏览器内核,可以解析和渲染网页。 2. JavaScript接口:WebView不仅能够显示网页,...