메뉴 건너뛰기

조회 수 8587 추천 수 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 창이 뜨게 된다.

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


  1. 푸시 서비스(GCM)에 대해 알아보자

  2. Invalid project description 문제

  3. No Image 01Jul
    by
    2015/07/01 Views 7110 

    [Android 2.3] SharePreference

  4. [Android 2.3] spinner

  5. 안드로이드 맵 API key (배포용 맵키)

  6. 안드로이드 소스 - 카메라 플래쉬(Flash, 후라시) 앱

  7. No Image 29Jun
    by
    2015/06/29 Views 8026 

    안드로이드 - 소방시설바이블 어플 소스 ( 폰갭, 폰갭플러그인, assets 폴더안의 파일 이용, pdf 리더기 선택, 유튜브재생기 선택 )

  8. No Image 29Jun
    by 조쉬
    2015/06/29 Views 8587 

    폰갭(PhoneGap) 플러그인 만들기

  9. No Image 29Jun
    by
    2015/06/29 Views 7450 

    폰갭(PhoneGap) 플러그인 사용하기

  10. No Image 29Jun
    by
    2015/06/29 Views 8643 

    폰갭(PhoneGap) 에서 페이지들간의 이동

  11. 폰갭(PhoneGap) & jQuery Mobile 로 안드로이드 어플 개발

  12. No Image 29Jun
    by
    2015/06/29 Views 6921 

    android SMS 리시버

  13. No Image 29Jun
    by
    2015/06/29 Views 7828 

    Java Applet과 javascript와의 통신

  14. No Image 29Jun
    by
    2015/06/29 Views 8387 

    안드로이드 소스 코드 보호 기법

  15. 안드로이드 NDK 개발환경 만들기 / 이클립스 NDK 설정

  16. No Image 10Jun
    by
    2015/06/10 Views 14444 

    TextureView를 이용한 카메라 Preview 좌우 반전

  17. No Image 20Oct
    by
    2014/10/20 Views 7442 

    prepend(),append(),before(),after() 메서드

  18. Events - Unbind() 메서드 (이벤트 처리기 해제)

  19. Effects - Show() / Hide() 메서드 (보이기 및 숨기기)

  20. Effects - FadeIn() / FadeOut() 메서드 (서서히 보이기 및 숨기기)

Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved