我开发了一个Android PhoneGap插件.该插件已成功调用,但未调用回调.我不知道我错过了什么.
有没有人知道在没有调用回调时可能出现什么问题?
以下是我的代码:
JS文件内容:var SharedPreferencePlugin = function() {}; SharedPreferencePlugin.prototype.getvalues = function(content, success, fail) { return PhoneGap.exec( function(args) { console.log("success called from plugin's js file"); }, function(args) { console.log("failure called from plugin's js file"); }, 'SharedPreferencePlugin', 'getvalues', [content] ); }; SharedPreferencePlugin.prototype.update = function(itemName, success, fail) { return PhoneGap.exec( function(args) { console.log("success called from plugin's js file"); }, function(args) { console.log("failure called from plugin's js file"); }, 'SharedPreferencePlugin', 'update', [itemName] ); }; PhoneGap.addConstructor(function() { PhoneGap.addPlugin('SharedPreferencePlugin', new SharedPreferencePlugin()); });Java文件:
public class SharedPreferencePlugin extends Plugin{ public static final String GET_ACTION = "getvalues"; public static final String UPDATE_ACTION = "update"; static Context staticContext = MainActivity.staticContext; SharedPreferences dataStorage = staticContext.getSharedPreferences(MainActivity.PREFS_NAME, 0); public PluginResult execute(String action, JSONArray data, String callbackId) { Log.d("SharedPreferencePlugin", "Plugin Called with action: " + action); PluginResult result = null; if(action.equals(GET_ACTION)) { Log.d("SharedPrferencePlugin", "inside if for 'getvalues'"); JSONArray savedData = getPreferences(); Log.d("SharedPreferencePlugin", "Data: " + savedData); result = new PluginResult(Status.OK, savedData); } else if(action.equals(UPDATE_ACTION)) { try { updateSharedPreferences(data.getJSONObject(0).getString("itemName")); JSONObject jsonObject = new JSONObject(); jsonObject.put("status", "success"); result = new PluginResult(PluginResult.Status.OK, jsonObject); } catch(JSONException ex) { Log.d("SharedPreferencePlugin", "Got JSONException: " + ex.getMessage()); result = new PluginResult(PluginResult.Status.JSON_EXCEPTION); } } else { result = new PluginResult(PluginResult.Status.JSON_EXCEPTION); Log.d("SharedPreferencePlugin", "Invalid action: " + action + " obtained."); } return result; } public void updateSharedPreferences(String itemName) { Log.d("SharedPreferencePlugin", "Inside updateSharedPreferences, value passed: " + itemName); SharedPreferences tmpPreferenceReference = staticContext.getSharedPreferences(MainActivity.PREFS_NAME, 0); SharedPreferences.Editor editor = tmpPreferenceReference.edit(); if(itemName.equals(tmpPreferenceReference.getString(MainActivity.NAME_ITEM1, ""))) { Integer tmpInt = Integer.parseInt(tmpPreferenceReference.getString(MainActivity.QUANTITY_ITEM1, "0")) - 1; editor.putString(MainActivity.QUANTITY_ITEM1, tmpInt.toString()); } editor.commit(); } protected JSONArray getPreferences() { ArrayListHTML代码致电插件:arrItemNames = new ArrayList (); ArrayList arrItemQuantities = new ArrayList (); arrItemNames.add(0, dataStorage.getString(MainActivity.NAME_ITEM1, "")); arrItemNames.add(1, dataStorage.getString(MainActivity.NAME_ITEM2, "")); arrItemQuantities.add(0, dataStorage.getString(MainActivity.QUANTITY_ITEM1, "")); arrItemQuantities.add(0, dataStorage.getString(MainActivity.QUANTITY_ITEM2, "")); //------------------------------------------------------------------- ArrayList tempArrayList = new ArrayList (); tempArrayList.add(arrItemNames); tempArrayList.add(arrItemQuantities); JSONArray jsonData = new JSONArray(tempArrayList); //------------------------------------------------------------------- return jsonData; } }
function test() { console.log("Test called"); window.plugins.SharedPreferencePlugin.getvalues({}, function() { // Success function console.log("success called"); }, function() { // Failure function console.log('Share failed'); } ); }
任何帮助都非常感谢.
谢谢.