Tôi đã xây dựng một Plugin rất đơn giản PhoneGap
để bắt đầu thử nghiệm cách tôi sẽ xây dựng một số hành động gốc trên Android.Nhận giá trị trả về từ PhoneGap Plugin
JavaScript:
function callNativePlugin() {
cordova.exec(nativePluginResultHandler, nativePluginErrorHandler, "Database", "saveAdvertencia", [ 1, "TesteAdv" ]);
}
function nativePluginResultHandler(result) {
alert("SUCCESS: \r\n" + result);
}
function nativePluginErrorHandler(error) {
alert("ERROR: \r\n" + error);
}
Java:
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("saveAdvertencia")) {
advertenciaDS = new AdvertenciaDS(cordova.getActivity());
callbackContext.sendPluginResult(new PluginResult(Status.OK, new JSONArray("test")));
return true;
}
return false;
}
Những gì tôi cần là một cách để lấy kết quả từ hành động trong cùng một phương pháp. Nó rất phức tạp để luôn luôn đối phó với 3 phương pháp (1 để thực hiện hành động. 1 để xác định những gì sẽ là hành động thành công. 1 để xác định những gì sẽ là hành động lỗi.) Khi bạn không thực sự kiểm soát khi chúng được gọi, kể từ khi PhoneGap
gọi cho họ sau khi hoàn thành hành động.
Nếu tôi cần phải lấy một số dữ liệu từ cơ sở dữ liệu Native Android:
- Gọi trong JavaScript là "cordova.exec".
- PhoneGap sẽ gọi plugin của bạn.
- Plugin của bạn sẽ trả lại 2 điều: Boolean cho PhoneGap xác định mọi thứ hoạt động như mong đợi hay không. Dữ liệu sẽ được chuyển đến các phương thức thành công.
- Đây là phần khó khăn đối với tôi. Nếu thành công hay không, bạn phải tạo 2 phương thức mà bạn không có quyền kiểm soát khi nào chúng sẽ được gọi, bởi vì PhoneGap sẽ quyết định điều đó. Làm cách nào để thay đổi điều này?
@mafutrct Cảm ơn bạn đã sửa chữa định dạng văn bản! – MBarni
Tất cả tín dụng đều được chuyển đến @Real, tôi vừa sửa một chi tiết nhỏ – mafu