phonegap前期準(zhǔn)備
-
node.js安裝
- 下載相應(yīng)的安裝跑進(jìn)行安裝即可
-
安裝phonegap
- npm install -g phonegap
- npm install -g cordova
-
生成第一個(gè)應(yīng)用
- 創(chuàng)建一個(gè)cordova項(xiàng)目 phonegap create projectName packageName;
- 創(chuàng)建一個(gè)android工程 cordova platforms add android (等同于phonegap run android蓄诽,但是執(zhí)行該句會(huì)出現(xiàn)無法執(zhí)行下去的情況兑巾。)
- cordova build 編譯執(zhí)行android工程(這里需要連接真機(jī)或者測(cè)試機(jī))
-
cordova項(xiàng)目目錄結(jié)構(gòu)
-
phonegap create xxxx 創(chuàng)建的文檔結(jié)構(gòu)
-
-
cordova platforms add Android 創(chuàng)建的Android項(xiàng)目結(jié)構(gòu)
-
cordova 為js提供的js 插件 結(jié)構(gòu)
-
android 的創(chuàng)建的資源文件內(nèi)容
-
js調(diào)用原生api 的方法定義
- 對(duì)于
html+css+js
書寫語法沒有變化豆巨,只有在通過JS調(diào)用原生的api的時(shí)候采用特定的格式 - 插件的定義,建議寫在
assets/www/plugins/xxx/xxx
目錄下
- 對(duì)于
-
js 插件在配置
- JS配置文件的位置
/assets/www/cordova-plugins.js
- JS配置文件的位置
js的調(diào)用插件里面的方法 使用
mytoast.show();
show(); 方法是在插件里面定義的執(zhí)行方法-
Android路由表結(jié)構(gòu)
- 路由表位置, 在Android工程中
/res/xml/config.xml
- 路由表位置, 在Android工程中
-
Android中插件的書寫
-
java類需要繼承CordovaPlugins 重寫
//按照不同的參數(shù)字旭,重寫的不同的方法進(jìn)行處理不同數(shù)據(jù) //參數(shù)一 js傳遞的當(dāng)前執(zhí)行的行為識(shí)別碼 在js插件中方法定義定義 //參數(shù)二 傳送的數(shù)據(jù) //參數(shù)三 執(zhí)行結(jié)束以后的回調(diào)(成功/失敗)會(huì)調(diào)用js中相應(yīng)的方法 execute(String action, JSONArray args, CallbackContext callbackContext) execute(String action, CordovaArgs args, CallbackContext callbackContext) execute(String action, String rawArgs, CallbackContext callbackContext)
-
如果需要加載動(dòng)態(tài)網(wǎng)絡(luò)資源需要重寫一下方法,
@Override public Boolean shouldAllowRequest(String url) { return true; } //返回為true就是能夠加載網(wǎng)絡(luò)資源棚壁,同時(shí)能夠使用Cordova.js 能夠與Android相互調(diào)用 @Override public Boolean shouldAllowBridgeAccess(String url) { return true; } @Override public Boolean shouldAllowNavigation(String url) { return true; }
?
-
在activity頁(yè)面中同時(shí)存在html頁(yè)面和原生Android控件
在界面不居中需要使用SystemWebView的控件,該控件繼承WebView
-
Activity需要繼承CordovaActivity類
public abstract class BaseActivityWebView extends CordovaActivity{ }
?
-
在Activity中findViewById得到該控件的實(shí)例栈虚,然后需要重寫
createView
和makeWebView()
@Override protected void createViews() { //獲取SystemWebView的焦點(diǎn) appView.getView().requestFocusFromTouch(); } @Override protected CordovaWebView makeWebView() { return new CordovaWebViewImpl(new SystemWebViewEngine((SystemWebView) webView)); }
-
加載html頁(yè)面
//針對(duì)CordovaActivity中WebView加載頁(yè)面使用一下方法袖外,才能和Cordova.js進(jìn)行交互 loadUrl("http://...."); loadUrl("file://....");
?
-
activity調(diào)用html中js方法
//使用CordovaActivity中提供的loadUrl方法直接調(diào)用。 //參數(shù)格式 String類型 "javascript:"+js方法名字 , 如果有參數(shù)直接拼接即可 loadUrl("javascript:" + jsActionNmae);
?
?