PhoneGap插件Android Barcode Scanner精簡版
PhoneGap插件Android Barcode Scanner精簡版是本文要介紹的內(nèi)容,主要是來了解PhoneGap插件的使用,phonegap plugins里的barcode scanner,用的是ZXing。結(jié)果android版竟然要安裝apk才能用,一看,這貨直接Intent的…無法,從ZXing拉了源碼下來自己整合,結(jié)果在浩瀚的java文件中哭了(T_T)。于是找了篇精簡教程,照著畫了下葫蘆,然后整成phonegap插件,終于能湊合用用了,效果也還滿意寫。
如何開發(fā)一個android phonegap插件(要翻墻)
js部分
- PhoneGap.exec( success, failure, service, action, args );
這個原型據(jù)說1.x以后會改成 PhoneGap.exec(options)。
success – 成功后的回調(diào)函數(shù),回調(diào)參數(shù)根據(jù)java端返回的類型而定,一般為String。
failure – 失敗后的回調(diào)函數(shù),回調(diào)參數(shù)一般為error code。
service – 插件的名稱。
action – 插件功能的名稱。
args – 功能所需的參數(shù),一個Object。
如果調(diào)用的插件函數(shù)無需參數(shù),最后一個args必須是一個空數(shù)組[],不能不傳、不能傳null、也不能傳{},否則會報錯jsonError。
java部分
每個插件都要繼承com.phonegap.api.Plugin,然后override execute方法,方法原型
- PlugResult execute(String action, JSONArray data, String callbackId);
action – js調(diào)用時所傳的action。
data – js調(diào)用時所傳的args。
callbackId – 這個是用來回調(diào)的指定id,由js部分自動生成,并傳遞給java。
返回的是一個PlugResult的,如果是同步調(diào)用,直接在execute函數(shù)中返回一個帶狀態(tài)的標(biāo)示的PlugResult即可,比如
- return new PlugResult(PluginResult.Status.INVALID_RESULT); 或者
- return new PlugResult(PluginResult.Status.OK, content); content既是js success callback參數(shù)
而如果是異步調(diào)用,則需要返回一個NO_RESULT狀態(tài)的PlugResult,并設(shè)置keepCallabck,然后記錄下callbackId,如下
- callback = callbackId;
- PlugResult result = new PlugResult(PlugResult.Status.NO_RESULT);
- result.setKeepCallback(true);
之后,在需要回調(diào)時,調(diào)用
- this.success(new PlugResult(PlugResult.Status.OK, content), this.callback);
android部分
需要使用插件的時候,要在res/xml/plugins.xml里加一個對插件的引用
- <plugin name=”" value=”"/>
name是插件名稱,也是js調(diào)用時的service名,注意這個必須和java的類名一致,否則報錯class not found。
value就是包含package的完整類名。
然后設(shè)置AndroidManifest.xml,因為用Intent調(diào)用ZXing提供的掃描功能,所以在manifest里,找到<application>標(biāo)簽,增加一個<activity>,然后設(shè)置一些屬性和intent-filter。注意activity的name要和java的類名相同,intent-filter的action name以及category name要和代碼中調(diào)用的名字相同。
我在github上建立的一個項目,里面包含了所有源文件——phonegap用的是剛出爐的1.0版,barcode部分是用了上面提到的高人精簡過的。
小結(jié):PhoneGap插件Android Barcode Scanner精簡版的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!