PhoneGap,Cordova框架下Html5中JS調用Android原碼
按照我一慣得套路,我會先說一點廢話。PhoneGap和Cordova什么關系?為什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平臺, 通過它,開發商可以使用HTML、CSS及JavaScript來開發本地移動應用程序。因此,目前開發商可以只編寫一次應用程序,然后在6個主要的移動 平臺和應用程序商店(app store)里進行發布,這些移動平臺和應用程序商店包括:iOS、Android、BlackBerry、webOS、bada以及Symbian。 Apache Cordova是PhoneGap貢獻給Apache后的開源項目,是從PhoneGap中抽出的核心代碼,是驅動PhoneGap的核心引擎。大概意思 也就是說:Cordova是由PhoneGap發展而來的,現在的Cordova就是當年的PhoneGap。所以下文中我來回的切換叫法,其實都是一個東西而已。下面言歸正傳,如何在PhoneGap或者Cordova框架下實現JS調用Android原生代碼?(這里就不再啰嗦如何在Android程序中集成PhoneGap了)
1.在你的html5中config.js定義你的Plugin的名稱和方法。名為MyPlugin,有兩個插件:一個為自動更新(Update),一個為密碼鎖定(PassLock)
- var MyPlugin = {
- UpDate: function (success, fail, url) {
- return PhoneGap.exec(function (args) {
- success(args);
- }, function (args) {
- fail(args);
- }, ‘UpDate’, ‘Update’, [url]);
- },
- PassLock: function (success, fail, url){
- return PhoneGap.exec(function (args) {
- success(args);
- }, function (args) {
- fail(args);
- }, ‘PassLock’, ‘PassLock’, [url]);
- }
- };
2.在xml文件夾下的plugin里注冊你的Plugin.
- <plugin name=”UpDate” value=”com.gapsh.plugin.UpdatePlugin”/>
- <plugin name=”PassLock” value=”com.gapsh.plugin.PassLockPlugin”/>
3.自定義你的Plugin類和處理方法.(這里只貼出了自動更新插件的代碼,很簡單,只是作了一個跳轉
- ublic class UpdatePlugin extends Plugin {
- @Override
- public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
- /*
- * 跳轉到UpdateActivity
- */
- Intent intent = new Intent(ctx.getContext(),UpdateActivity.class);
- ctx.startActivity(intent);
- String result = “跳轉至UpdateActivity”;
- PluginResult pluginResult = new PluginResult(Status.OK, result);
- return pluginResult;
- }
- }
4.在你的JS中調用你的插件。
- //自動更新
- upDate: function () {
- //調用android原生的方法檢查并更新
- MyPlugin.UpDate(function(){},function(){},’這里是一個參數,我這里不涉及參數的使用,所以隨便寫’);
- },
- passLock: function(){
- //調用android原生的方法進行密碼鎖定有關操作
- MyPlugin.PassLock(function(){},function(){},’
- 這里是一個參數,我這里不涉及參數的使用,所隨便寫
- ‘);
- },
5.測試,當你點擊你的某個按鈕或者鏈接執行你的update:function這個JS,然后在JS里調用了MyPlugin下的Update插件,這 個插件在config.js里被定義,在plugin.xml中被注冊,插件具體執行的地方時UpdatePlugin里的execute()方法。執行 完這個方法后,你就已經調用了Android的原生代碼咯,當然我這里是設置成了跳轉到另外一個Activity.
所需工具打包下載:http://pan.baidu.com/share/link?shareid=1636341858&uk=2937351404
本文鏈接:http://my.oschina.net/u/1157906/blog/293177