메뉴 건너뛰기

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

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


  1. 안드로이드 로그인유지 코드

    Date2015.12.14 Views8807
    Read More
  2. 안드로이드 EditText 필터링 검색 구현(adapter.getFilter().filter(cs))

    Date2015.12.14 Views8774
    Read More
  3. 안드로이드 webview (웹뷰) 개발 #3 - 초기 로딩화면 (splash) 띄우기 + 아이콘 적용하기

    Date2015.07.17 Views8697
    Read More
  4. JAVA JDBC를 사용하여 MySQL과 연동

    Date2015.11.21 Views8644
    Read More
  5. 화면 해상도에 관계없는 레이아웃(Layout) 만들기

    Date2015.07.16 Views8641
    Read More
  6. 폰갭(PhoneGap) 에서 페이지들간의 이동

    Date2015.06.29 Views8476
    Read More
  7. 폰갭(PhoneGap) 플러그인 만들기

    Date2015.06.29 Views8458
    Read More
  8. 안드로이드 소스 코드 보호 기법

    Date2015.06.29 Views8336
    Read More
  9. Activity Switching / 안드로이드 액티비티 전환 / 화면 전환

    Date2016.06.07 Views8311
    Read More
  10. 안드로이드 webview (웹뷰) 개발 #2 - 파일 첨부 및 플러그인 적용하기

    Date2015.07.17 Views8295
    Read More
  11. [안드로이드] 페이스북 같은 슬라이드 메뉴 만들기

    Date2015.07.21 Views8203
    Read More
  12. Android Navigation Drawer API 공개! 디자인 가이드 살펴보기

    Date2015.07.29 Views8141
    Read More
  13. 안드로이드 맵 API key (배포용 맵키)

    Date2015.07.01 Views8103
    Read More
  14. Android 와 JSP 간 파라미터 암복호화 (3)

    Date2016.05.26 Views8091
    Read More
  15. 화면 회전에 따른 애니메이션 효과 구현하기

    Date2015.07.16 Views8055
    Read More
  16. 안드로이드 로그인 화면 만들기

    Date2015.09.05 Views8043
    Read More
  17. 블루투스(Bluetooth) 통신에 대해 알아보자

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

    Date2015.06.29 Views7976
    Read More
  19. 안드로이드 NDK 개발환경 만들기 / 이클립스 NDK 설정

    Date2015.06.10 Views7890
    Read More
  20. 어댑터 뷰(Adapter View) & 어댑터(Adapter) (1)

    Date2016.06.08 Views7852
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved