How to process argument between js(html5) and cordova 3.x
CordovaPlugin 에서 상속받은 클래스의 멤버함수인 excute의 json을 처리할수 있는 스펙은 아래와 같습니다.
public boolean execute(String action, JSONArray args,
final CallbackContext callbackContext)
1. js 에서 넘어온 인자 받기
args 에 배열의 첫번째로 넘겨온 json object를 얻으려면 아래 와 같이 해줍니다.
JSONObject json = args.getJSONObject(0);
get 함수로 각각의 json object 의 멤버변수들을 얻어올수 있습니다.
Log.d(TAG, "pi : " + json.get("pi"));
Log.d(TAG, "number : " + json.get("number"));
Log.d(TAG, "msg : " + json.get("msg"));
각 변수들은 기본적으로 String 형으로 받아지기 때문에 int 형을 처리 해주려면 타입 캐스팅을 해줍니다.
(Integer) json.get("number") + 1
2. js 로 결과값을 인자로 넘겨주기
먼저 넘겨줄 빈 json 오브잭트를 만듭니다.
JSONObject resultJSON = new JSONObject();
put 함수로 값을 체워 넣습니다.
resultJSON.put("result", "ok");
resultJSON.put("msg", "json echo!!");
전송하기전에 먼저 PluginResult 객체에 담아줍니다.
PluginResult plugin_result = new PluginResult(Status.OK, resultJSON);
콜백컨텍스트의 sendPluginResult 함수로 js 측으로 결과 값을 전달합니다.
callbackContext.sendPluginResult(plugin_result);
3. 예제 실행법
파일을 다운받습니다.
코도바 프로잭트를 생성하고 안드로이드 플랫폼을 추가합니다.
압축을 푸시고 로컬에서 다음과 같이 플러그인을 추가 합니다.( 플러그인의 경로가 ../plugin_sample/echo 이라고 가정)
cordova plugin add ../plugin_sample/echo
js 쪽 예제는 첨부된 파일의 index.html을 참고 하시면됩니다.