Hybrid App 开发初探:使用 WebView 装载页面

简介:

 Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有 Web技术跨平台特性。目前大家所知道的基于中间件的移动开发框架都是采用的 Hybrid 开发模式,例如国外的PhoneGap、Titanium、Sencha,还有国内的 AppCan、Rexsee 等等。Hybrid App 开发模式正在被越来越多的公司和开发者所认同,相信将来会成为主流的移动应用开发模式。

  

 

  Hybrid App 融合 Web App 的原理就是嵌入一个WebView组件,可以在这个组件中载入页面,相当于内嵌的浏览器,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import  android.app.Activity;
import  android.os.Bundle;
import  android.webkit.WebSettings;
import  android.webkit.WebView;
 
public  class  AActivity  extends  Activity{
     
     @Override
     public  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         // 创建WebView
         WebView webView=  new  WebView( this );
         // 切换到内容视图
         setContentView(webView);
         // 获取WebView配置
         WebSettings ws = webView.getSettings();
         // 启用JavaScript
         ws.setJavaScriptEnabled( true );
         // 载入assets目录下的一个页面
         webView.loadUrl( "file:///android_asset/www/BoBox/index.html" );
     }
}

  还有另一种引入方式是在布局文件中添加 WebView 组件,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<? xml  version = "1.0"  encoding = "utf-8" ?>
< LinearLayout  xmlns:android = "http://schemas.android.com/apk/res/android"
     android:orientation = "vertical"
     android:layout_width = "fill_parent"
     android:layout_height = "fill_parent" >
     
     < WebView 
         android:layout_width = "fill_parent"
         android:layout_height = "wrap_content"
         android:id = "@+id/webview"
         />
         
</ LinearLayout >
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import  android.app.Activity;
import  android.os.Bundle;
import  android.webkit.WebSettings;
import  android.webkit.WebView;
 
public  class  BActivity  extends  Activity{
 
     @Override
     public  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.webview);
         // 查找WebView
         WebView webView = (WebView) findViewById(R.id.webview);
         // 获取WebView配置
         WebSettings ws = webView.getSettings();
         // 启用JavaScript
         ws.setJavaScriptEnabled( true );
         // 在载入assets目录下的一个页面
         webView.loadUrl( "file:///android_asset/www/index.html" );
     }
}

  WebView 还有一个非常重要的方法——addJavascriptInterface,可以用来实现 Java 程序和 JavaScript 程序的相互调用,代码如下:

?
1
2
3
4
5
6
7
8
9
webView.addJavascriptInterface( new  Object(){
     public  void  clickOnAndroid(){
         mHandler.post( new  Runnable(){
             public  void  run(){
                 webView.loadUrl( "javascript:wave()" );
             }
         });
     }
},  "demo" );

  页面代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
< script >
     function wave() {
         document.getElementById("id").innerHTML = "Hello World!";
     }
</ script >
</ head >
< body >
     < div >
         < a  href = "#"  id = "demo"  onclick = "window.demo.clickOnAndroid()" >Click Me</ a >
     </ div >
</ body >
</ html >

  这样,当你点击页面上 Click Me 按钮的时候就会调用 Java 代码中的 clickOnAndroid 函数,clickOnAndroid 函数中又调用页面中的 wave 方法。需要注意的是:这个接口在 Android 2.3 版本的模拟器中运行会导致 WebView 崩溃,目前还没有修复。这是一个非常简单的演示 Java 和 JavaScript 相互调用的例子,在实际应用中可以在页面调用的 clickOnAndroid 函数中再调用摄像头、通讯录、通知提醒等设备功能。



本文转自山边小溪 51CTO博客,原文链接:http://blog.51cto.com/lihongbo/941153,如需转载请自行联系原作者


相关文章
|
3月前
|
开发者
如何在线生成App:将网页封装成APP
在移动化的时代,许多企业和个人都希望拥有自己的移动应用程序,但是开发一款优秀的APP需要耗费大量的时间和金钱。而现在,通过在线生成App的方式,我们可以将自己的网页轻松封装成APP,从而实现快速上线。
|
3月前
|
Web App开发 Android开发
App自动化查看webview的元素定位信息
App自动化查看webview的元素定位信息
30 0
|
3月前
|
JavaScript Android开发
Cordova APP 无法访问后端接口
Cordova APP 无法访问后端接口
|
5月前
|
移动开发 小程序 Android开发
uniapp使用webview将页面转换成图片支持h5、app、小程序
uniapp使用webview将页面转换成图片支持h5、app、小程序
|
移动开发 安全 程序员
移动应用开发:Web App模式 、Native App模式及Hyprid App模式
移动应用开发:Web App模式 、Native App模式及Hyprid App模式
482 0
|
前端开发 Java Android开发
React Native |App里跳转到系统应用设置
React Native |App里跳转到系统应用设置
477 0
|
Web App开发 数据安全/隐私保护 Android开发
HBuilder包装iOS APP上App Store的详细过程
HBuilder包装iOS APP上App Store的详细过程
|
移动开发 小程序 JavaScript
Hybrid app本地开发如何调用JSBridge
Hybrid app本地开发如何调用JSBridge
139 0
Hybrid app本地开发如何调用JSBridge
|
存储 JavaScript 前端开发
利用cordova将网站封装成app
利用cordova将网站封装成app
132 0
|
存储 索引 容器
Flutter 构建常用的 App 页面框架
详细讲解如何用 Flutter 构建一个底部导航的 App 页面框架
424 0
Flutter  构建常用的 App 页面框架

热门文章

最新文章