- 浏览: 880089 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hzw2312:
C = sin(MLatA)*sin(MLatB)*cos(M ...
根据地球上任意两点的经纬度计算两点间的距离 -
zhang_sun:
rewind方法的limit又是多少呢?等于capacity? ...
ByteBuffer的flip,clear及rewind区别 -
kalogen:
一种每次都获取到不同的随机数的办法int ranseed=12 ...
J2ME中Random类的使用 -
kalogen:
估计部署在某个端口下吧,仔细检查一下发布的配置文件
Tomcat负载均衡和集群环境的搭建 -
zhuchao_ko:
文件大点就嗝屁了~~~
Axis 1.4 上传二进制文件(base64Binary)
大部分内容为网上整理其它高人的帖子,现只作整理,用于查看:
在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就可以 为所欲为了。
看一个实例:
- 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");
- }
- }
我们看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的目的。
来源:http://www.cnblogs.com/oakpip/archive/2011/04/08/2009800.html
发表评论
-
Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
2013-08-02 15:27 676Installation error: INSTALL_PA ... -
解决ADB server didn't ACK问题
2013-08-01 16:06 1002之前运行eclipse执行android应用都没问题,今天突然 ... -
Android应用签名
2013-01-08 15:05 1361为了要签名? 开发Android的人这么多,完全 ... -
Android中图片与屏幕密度 .
2012-10-10 14:19 858在drawable中的图片在不同密度的设备上显示时,在屏幕上的 ... -
在电脑上安装Android模拟器-部分更新详解
2012-10-09 17:03 1374本文根据如下的模拟器 ... -
android 反射机制中 getMethod()和getDeclaredField()区别
2012-09-15 11:33 10390今天在程序中用到java反 ... -
android2.2 的cookie
2012-08-29 19:22 919public static void getCookies(H ... -
把第三方的jar打包到android的apk文件中
2012-08-23 16:34 2409在android项目中新建一个文件夹libs,必须用这个,不能 ... -
Android调用天气预报的WebService简单例子
2012-08-23 11:47 1009下面例子改自网上例子:http://express.ruank ... -
android 正则表达式
2012-08-21 15:58 1297只能输入数字:"^[0-9]*$"。只能输 ... -
用反射功能找不到匹配的类的时候调试方法
2012-08-19 14:17 3554可以通过输出所有的methods 或者declaredMeth ... -
android 生命周期研究资料
2012-08-06 16:46 1091引言 应用程序组件有一个生命周期——一开始Android ... -
Android开发_如何调用系统默认浏览器访问
2012-08-01 19:31 1015一、启动android默认浏览 ... -
Android代码混淆的实践
2012-07-20 12:48 873发apk的时候当然要考虑保护好自己的代码,Android环境就 ... -
Android 获取文件目录以及文件的删除 .
2012-07-14 22:24 1369//看来看一下效果 //main.xml文件 & ... -
Android Intent的几种用法全面总结
2012-07-14 14:21 885Intent应该算是Android中特有的东西。你可以 ... -
最简单的获取未安装APK文件图标、包名的方法
2012-07-13 17:14 1485package lab.sodino.fetchapkicon ... -
Android获取未安装或已安装apk的版本、图标等资源 .
2012-07-12 23:06 1509在上篇博文中介绍了Android动态加载APK--代码安装、获 ... -
Android 动态加载APK--代码安装、获取资源及Intent调用已安装apk .
2012-07-12 23:05 7111最近在研究Android动态加载APK技术,偶有小得,共享一下 ... -
android系统中 从一个apk启动另外一个apk
2012-07-12 21:24 1572Intent mIntent = new Intent(“an ...
相关推荐
Android8.0以下手机自带的android-system-webview版本过低使用
Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...
而WebView则是Android系统中的一个组件,它允许开发者在应用程序中嵌入网页内容,实现类似浏览器的功能。 **PHP** 是“超文本预处理器”的缩写,是一种解释型的、面向对象的、通用的脚本语言。在Web开发中,PHP常...
这个项目对于理解WebSocket与Android WebView的结合使用具有重要的学习价值。 首先,WebSocket API在Android中的实现通常依赖于第三方库,如`android-async-http-websocket`或`java-websocket`等。这些库提供了创建...
在这个特定的案例中,"xamarin-android-webview-upload.7z" 压缩包文件包含了一个关于如何在 Xamarin Android 应用中使用 Web 视图(WebView)进行图片上传的示例项目。以下将详细解释这个知识点。 1. **Xamarin ...
iOS默认情况下支持此行为,因此将仅使用本机iOS WebView。 入门 yarn add hummingbird-me/react-native-android-fullscreen-webview 自动链接库 react-native link 更新AndroidManifest.xml 在您的主要活动下,...
在实际开发中,你可以通过引入`crosswalk-webview-14.43.343.23-arm`这样的库文件,将Crosswalk-WebView集成到Android项目中。这个特定版本是针对ARM架构的设备,包含了特定版本的Crosswalk-WebView,确保在相应设备...
在开发中,有时候我们会在app中使用WebView加载一个web页面。这样可以适当减轻我们开发的难度。但是弊端是WebView中切换html,没有像原生页面的切换效果。这里我们就利用动画,以及 获取网页的快照来实现android ...
react-native-android-webview解决React Native自带的WebView组件Android不能拦截URL的问题安装npm install react-native-android-webview --save 本机库链接安卓android/settings.gradle添加到android/settings....
•Android---UI篇---WebView(网络视图) • •Andorid---UI篇---两种进度条(ProgressBar) • •Android---UI篇---Dialog(对话框) • •Android---UI篇---AutoCompleteTextView(自动提示) • •Android---UI篇...
标题中的"com.android.webview-95.0.4638.50"指的是Android系统中的一个关键组件,即WebView。WebView是一个内置的浏览器引擎,允许Android应用程序(App)在不离开应用的情况下显示网页内容。它相当于一个轻量级的...
首先,Unity-webview-integration-master项目是一个针对Unity的WebView插件,它允许Unity应用在Android平台上加载和显示Web内容。这个项目的核心是将一个Android原生的WebView组件与Unity的游戏逻辑相结合,使得用户...
6. **源码分析**:在提供的压缩包文件名"react-native-webview-for-android-master"中,我们可以推测这可能是项目的源代码仓库。通过查看源码,我们可以学习如何实现这个自定义WebView组件,包括如何监听事件、如何...
Android WebView 加载 PDF 文件实现。其原理就是在 app 本地搭建一个 website ,然后利用 WebView 加载这个站点,站点去实现加载显示 PDF 的目的,站点其原理也是采用 js 框架去实现的。
然而,由于React Native的WebView组件与原生Android系统的交互限制,有时会出现无法从Android设备的相册或相机选择图片并上传的问题。这个问题可能会导致用户体验下降,因为用户无法充分利用手机的功能。本文将深入...
React Native是Facebook推出的一种跨平台移动应用开发框架,它基于JavaScript,允许开发者使用React组件化思想构建原生iOS和Android应用。通过React Native,开发者可以使用一套代码库同时开发两个平台的应用,提高...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。这个“Android-android端通用WebView”项目可能是为了提供一个可复用的、功能丰富的WebView组件,...
在Android开发中,Webview是一个非常重要的组件,它允许我们在应用程序内部嵌入网页内容,提供类似于浏览器的功能。本文将深入探讨如何在Android的Webview中实现缓存功能,包括指定缓存目录、设置缓存时间等关键知识...
本篇文章将深入探讨如何在Android应用中使用WebView加载HTML,并实现WebView与Html的交互。 首先,我们需要在布局XML文件中添加WebView组件。例如: ```xml <WebView android:id="@+id/webView" android:layout_...