Tôi đã phát triển một Plugin Android PhoneGap. Plugin được gọi thành công, nhưng cuộc gọi lại không được gọi. Tôi không biết mình đã bỏ lỡ bất cứ thứ gì.PhoneGap Android Plugin: Thành công & Thất bại Gọi lại không được gọi là
Có ai có bất kỳ ý tưởng nào về những gì có thể sai khi gọi lại không được gọi?
Tiếp theo là mã của tôi:
JS tập tin Nội dung:
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 file:
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()
{
ArrayList<String> arrItemNames = new ArrayList<String>();
ArrayList<String> arrItemQuantities = new ArrayList<String>();
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<ArrayList> tempArrayList = new ArrayList<ArrayList>();
tempArrayList.add(arrItemNames);
tempArrayList.add(arrItemQuantities);
JSONArray jsonData = new JSONArray(tempArrayList);
//-------------------------------------------------------------------
return jsonData;
}
}
HTML MÃ ĐỂ GỌI CHO CÁC PLUGIN:
function test()
{
console.log("Test called");
window.plugins.SharedPreferencePlugin.getvalues({},
function() { // Success function
console.log("success called");
},
function() { // Failure function
console.log('Share failed');
}
);
}
Bất kỳ sự giúp đỡ được đánh giá cao.
Cảm ơn.
Chỉ cần thêm thông tin: Vấn đề của bạn là thay vì gọi thành công hoặc thất bại trong cuộc gọi PhoneGap.exec, bạn chỉ đăng nhập vào bảng điều khiển – scooterman