將HTML5封裝成android應(yīng)用APK文件的幾種方法
越來(lái)越多的開(kāi)發(fā)者熱衷于使用html5+JavaScript開(kāi)發(fā)移動(dòng)Web App。不過(guò),HTML5 Web APP的出現(xiàn)能否在未來(lái)取代移動(dòng)應(yīng)用,就目前來(lái)說(shuō),還是個(gè)未知數(shù)。一方面,用戶(hù)在使用習(xí)慣上,不喜歡在瀏覽器上輸入復(fù)雜的網(wǎng)址;另一方面,Html5 Web App 存放在服務(wù)器端,在每次使用時(shí)需要進(jìn)行數(shù)據(jù)傳遞,會(huì)造成流量浪費(fèi)。有些開(kāi)發(fā)者不想接觸復(fù)雜的JAVA代碼,那么,有什么辦法,既可以使用HTMl5開(kāi)發(fā)應(yīng) 用,又可以將其簡(jiǎn)單封裝成APK文件呢?
一、Android SDK中的WebView
1.在要Activity中實(shí)例化WebView組件:WebView webView = new WebView(this);
2.調(diào)用WebView的loadUrl()方法,設(shè)置WevView要顯示的網(wǎng)頁(yè):
互聯(lián)網(wǎng)用:webView.loadUrl("http://www.31358.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調(diào)用Activity的setContentView( )方法來(lái)顯示網(wǎng)頁(yè)視圖
4.用WebView點(diǎn)鏈接看了很多頁(yè)以后為了讓W(xué)ebView支持回退功能,需要覆蓋覆蓋Activity類(lèi)的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退剪鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,而不是回退到上一頁(yè)面
5.需要在AndroidManifest.xml文件中添加權(quán)限,否則會(huì)出現(xiàn)Web page not available錯(cuò)誤。
<uses-permission android:name="android.permission.INTERNET" />
缺點(diǎn):如果是載入的是普通網(wǎng)頁(yè),沒(méi)有什么問(wèn)題,但如果是html5,封裝后,在android2.3以上才能正常訪問(wèn),android2.2及以下,SDK中的WebView還沒(méi)完全支持HTML5
下面是具體例子:
MainActivity.java
- package com.android.webview.activity;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.webkit.WebView;
- public class MainActivity extends Activity {
- private WebView webview;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //實(shí)例化WebView對(duì)象
- webview = new WebView(this);
- //設(shè)置WebView屬性,能夠執(zhí)行Javascript腳本
- webview.getSettings().setJavaScriptEnabled(true);
- //加載需要顯示的網(wǎng)頁(yè)
- webview.loadUrl("http://www.31358.cn/");
- //設(shè)置Web視圖
- setContentView(webview);
- }
- @Override
- //設(shè)置回退
- //覆蓋Activity類(lèi)的onKeyDown(int keyCoder,KeyEvent event)方法
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
- webview.goBack(); //goBack()表示返回WebView的上一頁(yè)面
- return true;
- }
- return false;
- }
在AndroidManifest.xml文件中添加權(quán)限
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.webview.activity"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdk android:minSdkVersion="10" />
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".MainActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-permission android:name="android.permission.INTERNET"/>
- </manifest>
二、使用PhoneGap
PhoneGap是一個(gè)用基于HTML,CSS和JavaScript的,創(chuàng)建移動(dòng)跨平臺(tái)移動(dòng)應(yīng)用程序的快速開(kāi)發(fā)平臺(tái)。它使開(kāi)發(fā)者能夠利用 iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手機(jī)的核心功能——包括地理定位,加速器,聯(lián)系 人,聲音和振動(dòng)等,此外PhoneGap擁有豐富的插件,可以以此擴(kuò)展無(wú)限的功能。PhoneGap是免費(fèi)的,但是它需要特定平臺(tái)提供的附加軟件,例如 iPhone的iPhone SDK,Android的Android SDK等,
詳細(xì)方法請(qǐng)見(jiàn):http://phonegap.com/start#android
優(yōu)點(diǎn):在Eclipse中加入SDK,編程自由,完美適應(yīng)不同設(shè)備屏幕大小,適合高手使用。
缺點(diǎn):沒(méi)有使用布局,直接加載網(wǎng)頁(yè),不能添加廣告。
三、使用Rexsee在線生成
Rexsee是開(kāi)源的Android開(kāi)發(fā)平臺(tái),支持開(kāi)發(fā)者以標(biāo)準(zhǔn)化Web開(kāi)發(fā)模式,使用HTML5、CSS3、Javascript快速實(shí)現(xiàn)移動(dòng)應(yīng)用。會(huì) HTML就會(huì)Android。你要做的只是將做好的HTML5 應(yīng)用上傳到Rexsee服務(wù)器,很快,會(huì)編譯成標(biāo)準(zhǔn)的APK安裝文件。
網(wǎng)站:http://www.rexsee.com
優(yōu)點(diǎn):一鍵生成,適學(xué)普通人使用
缺點(diǎn):直接封裝,無(wú)法添加廣告。
四、appMobi Html5 XDK 在線生成(使用了PhoneGap插件)
http://www.appmobi.com/