phonegap3.5外掛程式開發小demo

來源:互聯網
上載者:User

標籤:android   blog   http   java   使用   io   檔案   for   

      由於phonegap升級較快,在3.X之後改變了它的外掛程式機制,所有調用手機原生的功能全部以外部外掛程式的形式提供,建立phonegap項目之後不再能夠直接調用系統功能API如camera,device等,所以必須以外掛程式的形式引入到項目中來,才能夠使用。

     這裡主要講的是自訂外掛程式的開發及在項目中調用,關於怎麼使用別人已經寫好的外掛程式請參考官網http://docs.phonegap.com/en/3.3.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

首先看一下我們項目的一個目錄結構

說實話,使用命令列方式建立並匯入到eclipse裡面之後這個目錄結構並不是很清晰,變化較大。

接著,我們來建立一個自訂的外掛程式,在你的硬碟中如我的G盤建立一個目錄如

org.apache.cordova.echo,這個目錄就是存放你自訂外掛程式的根目錄,這個目錄下首先要建立一個Java檔案,既是你需要擴充的外掛程式的Java代碼,將其放置在org.apache.cordova.echo目錄下的src下面的android目錄下,代表的是在安卓平台下的代碼,在這個目錄下建立一個Echo.java檔案,代碼如下:

這裡的代碼就是需要執行的外掛程式代碼,作用是通過用戶端傳遞的參數再返回給用戶端,其中execute方法是必須的,供用戶端調用。

至此,我們的檔案夾下面的代碼結構為

這是第一步,Java代碼已經完成,

第二步需要在org.apache.cordova.echo目錄下建立一個www目錄,並在這個目錄下建立一個js檔案,取名叫echo.js,用來提供用戶端調用java代碼的橋樑,這個js代碼如下所示:

其中Echo.prototype.echo=function(success,error,str){

cordova.exec(sucess,error,‘Echo‘,‘echo‘,str)//‘Echo‘對應我們在java檔案中定義的類名,echo對應我們在這個類中調用的自訂方法,str是我們用戶端傳遞給這個方法的參數,是個數組

}

至於其他的圖function變數,我們完全可以自己定義。

至此,第二步已經完成,下一步是要寫一個plugin.xml檔案,用於命令列去進行外掛程式的註冊,在org.apache.cordova.echo檔案夾下建立一個plugin.xml檔案,代碼如下:

其中js-module指向的就是我們剛才所寫的js檔案的路徑,src指向www/echo.js,name屬性自己定義,clobbers代表我們在用戶端調用的時候的執行個體名。

下面最重要的platform節點代表每個平台下的配置,

 <source-file src="src/android/Echo.java" target-dir="src/org/apache/cordova/echo" /> 

src代表Java源檔案的地址,target-dir代表你要拷貝到項目中的地址

<config-file target="res/xml/config.xml" parent="/*">
<feature name="Echo">
<param name="android-package" value="org.apache.cordova.echo.Echo"/>
</feature>
</config-file>

這個是使用命令列之後添加到config檔案中的節點,其中<param name="android-package" value="org.apache.cordova.echo.Echo"/>中的value代表從外掛程式中Java檔案的路徑及類名

以上就是plugin.xml檔案,至此,我們已經完成了一個自訂外掛程式的編寫,整個外掛程式檔案夾下面的目錄結構如下:

下面使用命令列將這個外掛程式添加到你的項目中去

在nodejs下面切換到你的項目目錄中去

如下所示:

 

表示外掛程式已經加入到了你的項目當中,再看看我們的項目結構,你會發現src下面多了我們剛才寫的源碼,以及config.xml和cordova_plugin.js的變化

在assets的www目錄下的plugins多出了我們剛才寫的js檔案

在cordova_plugins.js中多了一段關於外掛程式註冊的代碼

這些都是命令列cordova plugin add自動產生的,不用管,當然如果你不想使用命令列方式或者不具備命令列環境,你也可以手動修改以上檔案

至此,我們的項目中可以調用自訂代碼了

在index.html中寫入以下代碼

 

其中onsuccess代表成功執行的回調,onfailure代表失敗執行的回調,result參數代表java代碼返回的結果,["send to native"]是我們用戶端調用的時候給java代碼傳遞的參數,將這個事件在deviceReady中註冊給一個按鈕,點擊這個按鈕,結果如下:

這代表我們傳遞給java代碼的參數被它傳回給用戶端,實現了js對於Java原生代碼的調用。至此,我們一個小的自訂外掛程式就完成了,對於複雜的外掛程式功能需要Java代碼去支援,這裡就不贅述了,原理都是一樣的。

以上文章主要參考了以下資料:

1.csdn網友的部落格:http://blog.csdn.net/newborn2012/article/details/26258803

2.官網資料:http://docs.phonegap.com/en/3.3.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide

3.iteye網友部落格:http://rensanning.iteye.com/blog/2029362

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.