메뉴 건너뛰기

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

폰갭 프로젝트를 만들때 cordova-2.9.0.jar 파일을 포함시켰었는데, 이 라이브러리에 DroidGap 클래스와 기본 플러그인들이 정의되어 있다.

이것을 사용하려면 assets/www 밑에 포함시킨 cordova.js 파일을 인클루드 시키고, 자바스크립트 호출 방식으로 사용을 하면 된다.

 

플러그인에는 여러가지가 있는데, http://docs.phonegap.com/en/2.9.0/index.html

위 링크에 들어가면 사용할 수 있는 플러그인 종류가 나열되어 있다.

애뮬레이터에서 테스트해볼만 적당한게.. "Contacts"를 사용하는 것으로 한번 정리를 해보겠다.

 

즉, 폰갭 어플에서 주소록을 추가하는 간단한 예문을 만들어보면 될 듯 하다.

 

1. "Contacts" 링크를 클릭해보면 사용 방법이 나온다.

2. 안드로이드용으로 만들 것이므로, Android 만을 보면..

3. 먼저 Permissions 부분을 보면 /res/xml/config.xml 파일에 사용할 플러그인을 지정해줘야 한다.

4. config.xml 파일을 열어서 제일 밑으로 이동하면 <plugins></plugins> 태그가 공백으로 있는데, 이 안에다가 아래와 같이 한줄을 추가한다.

<plugins>

 <plugin name="Contacts" value="org.apache.cordova.ContactManager" />

</plugins>

 

5. 그다음 AndroidManifest.xml 에 필요한 권한을 부여해야 되는데, 주소록 정보를 얻을 권한, 읽을 권한, 만들 권한 세가지가 존재한다. 여기서는 만들기만 할 것이므로 <manifest> 태그 안에다가 아래 한줄을 추가해준다.

<manifest ~~~~>

...

<uses-permission android:name="android.permission.WRITE_CONTACTS" />

</manifest>

 

그런데, 희한하게 저 권한만 주면 어플이 죽는다.

뭔가 권한이 더 필요할 듯 한데.. 일단은 아래와 같은 모든 권한을 전부 추가해준다.

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-permission android:name="android.permission.VIBRATE" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.RECEIVE_SMS" />
 <uses-permission android:name="android.permission.RECORD_AUDIO" />
 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 <uses-permission android:name="android.permission.READ_CONTACTS" />
 <uses-permission android:name="android.permission.WRITE_CONTACTS" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.GET_ACCOUNTS" />
 <uses-permission android:name="android.permission.BROADCAST_STICKY" />     

 

6. 문서 밑으로 내려보면 "contacts.create" 메서드에 대해 나오는데 동기함수이며, Contact 객체를 반환한다고 나와있다. 그리고, Contact 객체를 만들 뿐이며 실제 폰의 contacts database에는 저장하지 않는다고 나와있다. ( 저장하려면 Contact.save 메서드를 이용해야 한다. )

 

즉, contacts.create 메서드로 Contact 객체를 생성한 후 값을 설정한 다음 save 메서드를 호출해서 저장하면 되는 것이다.

 

7. 좀 내려보면 Contact 객체의 프로퍼티 목록이 나와있고 타입이 나와있다. 각각의 프로퍼티를 해당하는 타입객체로 채워넣으면 된다.

 

8. 예제를 만들기 위해서 index.html 을 다음과 같이 코딩한다.

 

<!DOCTYPE html>
 <html>
      <head>
           <title>Contacts</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() {
               var contact = navigator.contacts.create();
               contact.displayName = $("#displayName").val();
               contact.nickname = $("#nickname").val();
               
               var name = new ContactName();
               name.givenName = $("#givenName").val();
               name.familyName = $("#familyName").val();
               
               contact.name = name;
               
               var phoneNumbers = [];
               phoneNumbers[0] = new ContactField("mobile", $("#phoneNumber").val(), true);
               
               contact.phoneNumbers = phoneNumbers;
               
               contact.save();
               
               alert("Saved");
              });
             });
           </script>
      </head>

      <body>
   <section id="mainpage" data-role="page">
    <header data-role="header">Contacts</header>
    <div class="content" data-role="content">
     <label for="displayName">displayName</label><input type="text" id="displayName"/>
     <label for="nickname">nickname</label><input type="text" id="nickname"/>
     <label for="familyName">familyName</label><input type="text" id="familyName"/>
     <label for="givenName">givenName</label><input type="text" id="givenName"/>
     <label for="phoneNumber">phoneNumber</label><input type="text" id="phoneNumber"/>
     <input type="button" value="Add Contact" id="btn_add" />
    </div>
    <footer data-role="footer">Hanttasoft</footer>
   </section>
      </body>

 </html>

 

9. 즉, 몇가지 입력필드에 값을 채워놓고, "Add Contact" 버튼을 클릭하면 contact.create 메서드로 Contact 객체를 생성하여 입력된 값으로 채워넣고 contact.save를 호출하여 실제 저장소에 저장을한다... 란 내용이다. ( jQuery의 ready 함수에서 버튼 이벤트를 건 것인데, 이 부분은 jQuery를 좀 공부하시길.. )

 

10. 어플을 종료하고 애뮬레이터에 있는 주소록을 보면 방금 입력한 내용이 추가된 것을 확인할 수가 있다.


  1. 화면 회전에 따른 애니메이션 효과 구현하기

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

    Date2015.07.16 Views8641
    Read More
  3. 화면 전환해도 데이터 유지 예제

    Date2015.07.26 Views9204
    Read More
  4. 하이브리드앱 기본 - WebView로 웹페이지 띄우기

    Date2020.12.14 Views1025
    Read More
  5. 하이브리드 앱에서의 세션관리(로그인 상태 유지)

    Date2018.12.27 Views4998
    Read More
  6. 푸시 서비스(GCM)에 대해 알아보자

    Date2015.07.01 Views7000
    Read More
  7. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (3)

    Date2015.07.16 Views6267
    Read More
  8. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (2)

    Date2015.07.16 Views7292
    Read More
  9. 푸쉬 알림 기능. GCM (Google Cloud Messaging) 사용하기 (1)

    Date2015.07.16 Views6726
    Read More
  10. 폰갭(PhoneGap) 플러그인 사용하기

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

    Date2015.06.29 Views8422
    Read More
  12. 폰갭(PhoneGap) 에서 페이지들간의 이동

    Date2015.06.29 Views8459
    Read More
  13. 폰갭(PhoneGap) & jQuery Mobile 로 안드로이드 어플 개발

    Date2015.06.29 Views7839
    Read More
  14. 폰갭 비콘 디텍팅 안될 때 (기본적인건 다 되있어야됨)

    Date2015.07.26 Views6529
    Read More
  15. 패키지명을 한꺼번에 변경하기 (Refactor)

    Date2020.12.14 Views295
    Read More
  16. 특정 폴더에서 오래된 파일 삭제하기

    Date2015.07.16 Views6767
    Read More
  17. 트리뷰(TreeView) 컨트롤

    Date2014.10.16 Views6722
    Read More
  18. 탭 뷰에 탭 추가하기, 아이콘 넣기

    Date2015.07.16 Views9360
    Read More
  19. 클래스나눠서 xml 파싱과 FTP를이용하여 안드로이드에서 활용하기

    Date2014.08.28 Views6180
    Read More
  20. 카카오톡 분석하기 (2) - 카카오톡 암호화 함수 찾기

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

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved