개발 가이드
Local Navigation
- BlackBerry Device Software 프로그램과 통합
- 통합 검색
- 데이터를 찾을 수 있게 만들기
- SearchableEntity 객체에 대해 EntityBasedSearchable 클래스 정의
- SearchableEntity 클래스에서 데이터 요약
- Specifying what users can do with your data in search results
- EntityBasedSearchable 객체를 통합 검색 서비스에 등록
- 데이터 변경 사항에 대해 통합 검색 서비스에 알림
- 통합 검색 서비스로부터 응답 수신
- 콘텐츠 저장소에서 데이터 제거
- 다른 검색 엔진 사용
- 단말기에서 프로그램의 단일 인스턴스가 실행되도록 보장
- 단말기가 시작될 때 데이터 삽입
- 검색
- 단말기 상호 작용 지원
- 메시지 목록
- 사용자 정의 메시지
- 첨부 파일
- 캘린더
- 연락처 목록
- 작업 목록
- 전화
- BlackBerry Browser
- 메뉴 항목
- 자세한 정보 확인
- 용어
- 의견 제공
- 문서 수정 내역
- 법적 고지
BlackBerry Manuals & Help
>
개발자 문서
>
Java 개발 가이드 및 API 참조서
>
개발 가이드
Integration Guide - BlackBerry Java SDK - 7.0
SearchableEntity 객체에 대해 EntityBasedSearchable 클래스 정의
구현된 EntityBasedSearchable 인터페이스는 통합 검색 서비스 그리고 직접 만든 검색 가능 엔터티 간의 관계를 관리합니다. 각 EntityBasedSearchable 객체는 동일한 검색 가능 속성을 가진 SearchableEntity 객체의 그룹을 관리합니다.
- 필요한 클래스와 인터페이스를 가져옵니다.
import net.rim.device.api.unifiedsearch.SearchField; import net.rim.device.api.unifiedsearch.searchables.EntityBasedSearchable; import net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants; import net.rim.device.api.unifiedsearch.searchables.Searchable;
- EntityBasedSearchable과 관련된 정보를 저장하기 위한 인스턴스 변수를 만듭니다.
private MySearchableEntity[] _myEntities; // You will need this in steps 8 and 11 private long _registrationID; private SearchField[] _searchFields; private Image _icon; private final Object _monitor = new Object(); private boolean _wait = false;
- 생성자에서 SearchField 객체의 배열을 만듭니다. 각 SearchField는 데이터의 한 검색 가능 속성의 이름을 저장합니다. 다음 코드 샘플에서 이 클래스에 의해 관리되는 프로그램 데이터 객체에는 세 개의 검색 가능 속성이 있습니다. 예를 들어, 프로그램 데이터가 책을 모델링한 경우에는 이들 필드에 제목, 출판사, 페이지 수가 포함될 수 있습니다.
class MyEBS implements EntityBasedSearchable { _searchFields = new SearchField[3]; - 각 SearchField에 의미 있는 이름을 할당합니다.
_searchFields[0] = new SearchField("Title"); _searchFields[1] = new SearchField("Publisher"); _searchFields[2] = new SearchField("Number of pages"); } - 이 EntityBasedSearchable에 의해 관리되는 검색 가능 엔터티를 포함하는 검색 결과에 표시할 아이콘을 만듭니다. 아이콘 만들기에 대한 자세한 내용은 "검색 결과에서 데이터 보기 설정 사용자 정의"를 참조하십시오.
- getType()를 구현합니다. 프로그램 데이터와 가장 일치하는 콘텐츠 유형을 반환합니다. 유효한 콘텐츠 유형의 목록은 API 참조서에서 net.rim.device.api.unifiedsearch.searchables.SearchableContentTypeConstants 인터페이스를 참조하십시오.
public long getType() { return SearchableContentTypeConstants.CONTENT_TYPE_MEMO; - 프로그램의 검색 결과를 받을 검색 생성자를 선택합니다. 검색에 데이터를 노출하는 방법에 대한 자세한 내용은 API 참조서에서 net.rim.device.api.unifiedsearch.entity.ExposureLevel 클래스를 참조하십시오.
public int getPrivacyLevel() { return ExposureLevel.LEVEL_PUBLIC; } - load()를 구현합니다. BlackBerry 단말기가 다른 용무 중이거나 배터리 잔량이 낮은 경우 이 메소드의 작업을 일시 중지했다 요청될 때 다시 시작해야 할 수도 있습니다.
- EntityBasedSearchable에 대해 프로그램에 현재 얼마나 많은 데이터 객체가 있는지 확인합니다.
public void load (NotificationListener observer, int loadType) { Vector myObjects = MyObjectManager.getDataObjects(); if (myObjects != null) { int size = myObjects.size() if(size < 1) { _myEntities = new MySearchableEntity[0]; } else { _myEntities = new MySearchableEntity[size]; } } else { // handle the condition where you have no data objects } - while 루프를 사용하여 검색 가능 엔터티의 배열을 채웁니다.
Enumeration objects = myObjects.elements(); int count = 0; while (objects.hasMoreElements()) { - 통합 검색 서비스가 pause 명령을 보냈는지 확인합니다. 명령을 보낸 경우에는 검색 가능 엔터티 배열을 채우는 작업을 일시 중지하고 서비스에 알립니다.
if (_wait){ try { synchronized(_monitor) { observer.partiallyCompleted(this, null, NotificationListener.TYPE_SEARCHABLE); _monitor.wait(); } } catch (InterruptedException e){ observer.error(e); return; } } - 프로그램이 스레드를 다시 제어하게 되면 검색 가능 엔터티 배열을 계속 채웁니다.
MyObject dataObject = (MyObject) objects.nextElement(); _myEntities[count++] = new MySearchableEntity(dataObject, this); } - 데이터 로드가 완료되었음을 통합 검색 서비스에 알립니다.
observer.completed(this, NotificationListener.TYPE_SEARCHABLE); }
- EntityBasedSearchable에 대해 프로그램에 현재 얼마나 많은 데이터 객체가 있는지 확인합니다.
- pause()에서 _wait 변수의 값을 true로 변경합니다. 통합 검색 서비스는 프로그램이 데이터 로드를 중지하도록 할 때 이 메소드를 호출합니다.
public void pause() { _wait = true; } - resume()에서 _wait 변수의 값을 false로 변경합니다. 또한 load() 메소드에 실행을 다시 시작할 수 있다는 것을 알립니다. 통합 검색 서비스는 프로그램이 데이터 로드를 다시 시작하도록 할 때 resume()를 호출합니다.
public void resume() { _wait = false; synchronized(_monitor) { _monitor.notifyAll(); } } - getSearchableEntities()에서, 8단계에서 만든 _myEntities 배열을 반환합니다.
public SearchableEntity[] getSearchableEntities() { return _myEntities; }
다음 주제: 검색 결과에서 데이터 보기 설정 사용자 정의
이전 주제: 다른 검색 엔진에 쿼리 전달