메뉴 건너뛰기

조회 수 8458 추천 수 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
번호 제목 날짜 조회 수
157 [하이브리드앱] 링크를 웹뷰가 아닌 새로운 브라우저에서 열기 2021.09.30 293
156 간단한 mp3 플레이어 만들기 , 음악넣기 , 노래재생 file 2016.06.07 14626
155 구글맵 snippet을 두줄이상으로 구현하기 file 2020.12.14 481
154 구글맵으로 GPS 현재위치 실시간 연동하기 file 2020.12.14 2458
153 내가 입력한 글자 Toast로 나오게 하기 file 2015.07.26 6896
152 네트워크 상태 변화 감지하기(BroadcastReceiver 사용) 2015.07.16 9935
151 네트워크 연결 상태 및 3G/WIFI 연결상태 체크하기 2016.03.18 7131
150 네트워크를 통해 받은 이미지를 파일로 저장하고, 크기 조절해서 불러오기 2015.07.16 6155
149 노티피케이션(Notification) 사용법 / Notification.Builder , NotificationManager file 2016.06.10 13470
148 다운로드 매니저(DownloadManager)에 대해 알아보자 file 2015.07.01 9246
147 맵에 오버레이 추가하여 아이템 넣어보기 2014.08.28 6474
146 문자를 음성으로 변환(TTS)에 대해 알아보자 file 2015.07.01 7768
145 버튼 누르면 이미지 바꾸기 file 2015.07.26 6613
144 버튼 생성, 이벤트 처리 file 2021.03.31 236
143 버튼 이벤트 file 2021.03.31 205
142 버튼 이벤트 추가하기 file 2021.03.31 191
141 버튼(Button) 패딩 제거 2016.06.10 7651
140 블루투스 및 비콘 관련 정리 2015.07.26 10828
139 블루투스(Bluetooth) 통신에 대해 알아보자 file 2015.07.01 7983
138 블루투스(Bluetooth) 통신에 대해 알아보자 file 2015.07.26 14048
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved