메뉴 건너뛰기

조회 수 8459 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

직접 만든 플러그인을 호출할 때는 cordova.exec 함수를 호출해서 사용한다. 

 

형태는 아래와 같다.

 

cordova.exec( 성공시콜백함수, 실패시콜백함수, 클래스명, 액션명, [전달인자] );

 

예를 들어서

 

cordova.exec( function(param) {}, function(error) {}, "MyPlugin", "MyAction", ["param1", "param2", "param3"]);

 

위와 같이 호출했다면 MyPlugin 클래스의 execute 함수가 호출이 되는데, execute의 파라미터로 액션명과 파라미터들이 같이 전달된다. 그리고, execute 함수에서 콜백함수를 호출해주면 자바스크립트의 성공콜백함수, 실패콜백함수가 호출되는 것이다.

 

>> 위 스토리를 실제 예로 정리를 해보면 다음과 같다.

 

1. CordovaPlugin 클래스로부터 상속을 받는 클래스를 만든다.

 

...

import org.apache.cordova.api.CordovaPlugin;

import org.apache.cordova.api.PluginResult;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

 

public class HelloPlugin extends CordovaPlugin {

 ...

}

 

2. CordovaPlugin 클래스의 execute 함수를 오버라이드한다.

 

public class HelloPlugin extends CordovaPlugin {

...

 

@Override

public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {

...

}

}

 

3. execute 함수를 다음과 같이 정의한다.

 

if ( action.equals("hello") ) {

String yourname = args.getString(0);

 

if ( yourname == null || yourname.length() == 0 ) {

callbackContext.error("input your name");

return true;

}

 

callbackContext.success("Hello " + yourname );

return true;

}

return false;

 

4. 해석을 해보자면 이름을 넘겨받으면 "Hello 이름" 으로 반환해주는 역할을 한다.

이름이 입력되지 않았다면 error 콜백함수를 호출해주며 정상적이라면 success 콜백함수를 호출해준다.

그리고, hello 액션이 아니라면 false를 반환하고 false가 반환되면 그냥 예외로 떨어진다.

 

5. index.html를 다음과 같이 수정한다.

 

<!DOCTYPE html>
 <html>
      <head>
           <title>Hello</title>
           <meta name="viewport" content="width=device-width, initial-scale=1"/>
          
           <link rel="stylesheet" href="jquery.mobile-1.3.1.min.css"/>
           <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
           <script src="jquery-1.10.2.min.js"></script>
           <script src="jquery.mobile-1.3.1.min.js"></script>
           <script type="text/javascript">
             $(function() {
              $("#btn_add").click(function() {
              
               cordova.exec(function(result) {
                alert(result);
               }, function(error) {
                alert(error);
               }, "HelloPlugin", "hello", [$("#yourname").val()]);
               
              });
             });
           </script>
      </head>

      <body>
   <section id="mainpage" data-role="page">
    <header data-role="header">Hello</header>
    <div class="content" data-role="content">
     <label for="yourname">yourname</label><input type="text" id="yourname"/>
     <input type="button" value="Hello" id="btn_add" />
    </div>
    <footer data-role="footer">Hanttasoft</footer>
   </section>
      </body>

 </html>

 

6. 이제 HelloPlugin 이란 플러그인을 config.xml 파일에다가 등록해준다.

 

/res/xml/config.xml 파일을 열어서 다음줄을 추가해준다.

 

<plugin name="HelloPlugin" value="kr.inclass.mysample.HelloPlugin" />

 

===> 물론, 클래스의 전체경로는 자신의 패키지명에 맞게 수정한다.

 

7. 위 까지 작업한후 Run을 시켜보면...

이름 입력란에 이름을 입력하고 "Hello" 버튼을 클릭하면 입력된 이름으로 인사를 하는 alert 창이 뜨게 된다.

이름을 입력하지 않고 버튼을 클릭하면 이름 입력하라는 경고창이 뜨게 된다.


List of Articles
번호 제목 날짜 조회 수
217 안드로이드에서 url 주소로 이미지 바로 불러오기 (Glide 사용) 2020.12.14 759
216 안드로이드에서 JSP 를 사용하여 mysql 연동하기 2015.07.16 11685
215 안드로이드스택(Android Stack) 확인 file 2016.06.10 7778
214 안드로이드] 페이스북 같은 슬라이드 메뉴 만들기 file 2015.12.15 12537
213 안드로이드 팝업창 만들기(xml 내용 집어넣기) file 2015.07.23 9285
212 안드로이드 채팅 소스 샘플 file 2015.07.26 10088
211 안드로이드 종료 취소 다이얼로그 코드 2015.07.26 6389
210 안드로이드 입문 연습문제 3문항 - CheckBox, RadioButton, EditText, Spinner, 이벤트연습 file 2020.12.14 480
209 안드로이드 이미지 효율적으로 회전 해보기 2014.08.28 6010
208 안드로이드 웹에서 이미지 불러오기!! 2014.08.28 7055
207 안드로이드 앱배포하기 apk 만들기 file 2020.12.14 326
206 안드로이드 액티비티 세로고정 2021.09.14 207
205 안드로이드 스튜디오 자동 임포트 하기 file 2015.07.09 7107
204 안드로이드 스튜디오 gradle error 해결 2015.07.23 6683
203 안드로이드 스튜디오 actionbar(액션바) 사라짐 file 2020.12.14 614
202 안드로이드 스튜디오 - 필수 재정의 함수 자동 코드 추가 file 2021.03.29 194
201 안드로이드 스튜디오 - 코드 자동 들여쓰기 file 2021.03.29 420
200 안드로이드 스튜디오 - 줄번호 표시하기 1 file 2015.07.03 7755
199 안드로이드 스튜디오 - 싱글톤 패턴 (SingleTon Pattenr) 클래스 자동 생성 file 2021.03.29 621
198 안드로이드 스튜디오 - rendering problem 해결법 file 2015.07.10 7661
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved