1. 개요

     BONDI의 Contact API는 단말기에 저장된 주소록에 접근하여, 이를 Bondi의 AddressBook 형태로
     만들어 특정 Contact를 검색하거나, 갱신, 삭제하는 등의 작업을 할 수 있도록 지원한다.
     주소록은 물리적으로 SIM 또는 Device Memory에 위치할 수 있으며, SIM에 저장된 AddressBook은
     이름과 번호 정보만을 갖는다.
2. Interface
     1) ContactManager
          – getAddressBooks();
             단말기에 저장된 Address Book들을 반환하는 함수. [0]번지에는 Native Address Book을
             [1]번지에는 SIM Address Book을 생성하여 반환한다.
             ex) var addressBooks = bondi.pim.contact.getAddressBooks();
                   var nativeBook = addressBooks[0];
                   var simBook = addressBooks[1];
     2) AddressBook
          – createContact (options);
             Options field를 적용하여 Contact Object를 생성하는 함수.
             Detailed Options field. (SIM 주소록은 name과 telephone만 지원)
             – name : 연락처의 이름
             – nickName : 애칭, 별명
             – address : “street”, “number”, “postalcode”, “city”, “country”로 구성된 주소값
             – telephone : 휴대전화번호
             – mail : E-mail 주소
             – photo : 단말기에 저장된 Image의 경로
             ex) var contact = addressbooks[0].createContact({
                                         name : “Pedro Frace”, nickName : “peter”,
                                         address : {street:”Gran Via”, number :”32″, postalcode:”50013″,
                                                         city:”Zaragoza”, country:”Spain”},
                                         mail : “pedra@gmail.com”,
                                         telephone : “6666666666”
                                         photo:”image/pedro.jpg”});
          – addContact (successCallback, errorCallback, contact);
             생성한 Contact Object를 주소록에 추가하는 함수.
             successCallback : Contact Object가 정상적으로 추가됐을때 호출되는 함수
             errorCallback : Contact Object를 추가하는 중 문제가 발생했을때 호출되는 함수
             contact : 주소록에 추가하려는 Contact Object
             ex) addressbooks[0].addContact(successCallback, errorCallback, contact);
          – updateContact (successCallback, errorCallback, contact);
             Contact의 정보를 갱신하는 함수. 갱신할때는 Contact Object의 Property중 값이 null이
             아닌 것에 대해서만 갱신을 수행한다.
             ex) addressbooks[0].updateContact (successCallback, errorCallback, contact);
          – deleteContact (successCallback, errorCallback, contact);
             인자로 받은 contact 정보에 대응하는 Contact를 AddressBook에서 삭제하는 함수.
             ex) addressbooks[0].deleteContact(successCallback, errorCallback, contact);
          – deleteAllContacts (successCallback, errorCallback);
             주소록에 저장된 모든 Contact를 삭제하는 함수
             모든 Contact가 정상적으로 삭제됐을 경우 successCallback을 호출한다. 만약 삭제중
             문제가 발생하면 errorCallback을 호출한다.
             ex) addressbooks[0].deleteAllContact (successCallback, errorCallback);
          – findContacts (successCallback, errorCallback, filter);
             filter option을 만족하는 contact들을 AddressBook에서 검색하여 반환하는 함수.
             filter option에 하나이상의 값이 설정되어 있으면 각각의 옵션은 AND로 묶이게 된다.
             검색결과는 successCallback의 인자로 전달된다.
             Detailed Filter Option
              – name : Contact의 이름
              – nickName : 애칭, 별명
              – address : {street, number, postalcode, city, country}로 구성된 주소값
              – telephone : 휴대전화번호
              – mail : e-mail주소
              – photo : 단말기에 저장된 Image의 경로
              ex) function successCallback (contacts) {
                      alert(contacts.length + ” results found”);
                    }
                    function errorCallback () {
                    }
                    addressBooks[0].findContact(successCallback, errorCallback, {name : “Guillermo”});
     3) Contact
          * Read-Only Attribute
             – id : Contact에 부여되는 unique한 값으로 identifier로 사용된다.
          * Read/Write Attributes
             – name : Contact의 이름
             – nickName : Contact의 애칭
             – address : {street, number, postalcode, city, country}로 구성된 주소값
             – telephone : 휴대전화번호
             – mail : e-mail주소
             – photo : 단말기에 저장된 Image의 경로
          * Method
             – getProperty (propertyName);
               property의 이름으로 접근하여 값을 얻어오는 함수.
               ex) var location = contact.getProperty(“location”);

             – getSupportedPropertyKeys ();
               지원하는 Property들의 이름을 Array의 형태로 반환하는 함수.
               ex) var supportedAttributes = contact.getSupportedPropertyKeys();

             – setProperty (propertyName, value);
                propertyName에 해당하는 attribute의 값으로 value를 설정하는 함수.
                ex) contact.setProperty(“name”, “Alexandro”);