개발 가이드
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
단말기에서 프로그램의 단일 인스턴스가 실행되도록 보장
프로그램의 효율성을 높이려면 ExternalSearchProvider 구현에서 search()를 호출할 때 BlackBerry 단말기가 한 인스턴스만 실행하고 있어야 합니다.
- ExternalSearchProvider 구현에서, 단말기에서 실행 중인 프로그램을 확인할 수 있는 패키지를 가져옵니다.
import net.rim.device.api.system.ApplicationDescriptor; import net.rim.device.api.system.ApplicationManager; import net.rim.device.api.system.ApplicationManagerException; import net.rim.device.api.system.CodeModuleManager;
- search()에서 프로그램의 핸들을 검색합니다.
public void search(String keywords) { int modHandle = CodeModuleManager.getModuleHandle("MyApplication"); - 단말기에서 실행 중인 프로그램들을 나타내는 객체 배열을 검색합니다.
ApplicationDescriptor[] allApps = ApplicationManager.getApplicationManager().getVisibleApplications();
- 배열의 각 요소를 조사하여 단말기에서 프로그램이 실행 중인지 확인합니다.
for(int i = allApps.length -1; i >= 0; --i) { if(allApps[i].getModuleHandle() == modHandle) { - 프로그램이 실행 중이면 프로그램에 검색 키워드를 보냅니다. postGlobalEvent()를 호출하여 새 키워드에 대한 결과를 화면에 표시해야 한다는 것을 알리는 메시지를 프로그램에 보냅니다. 프로그램의 생성자에서 GUID에 게시되는 글로벌 이벤트를 파악해야 합니다.
int procID = ApplicationManager.getApplicationManager().getProcessId(allApps[i]); ApplicationManager.getApplicationManager().postGlobalEvent(procID, your application's GUID, 0, 0, keywords, null); } } - 프로그램이 단말기에서 실행되고 있지 않으면 프로그램을 나타내는 ApplicationDescriptor 객체를 검색합니다.
ApplicationDescriptor[] myAppDes = CodeModuleManager.getApplicationDescriptors(modHandle);
- 프로그램을 시작합니다. 검색 키워드를 인수로 전달합니다. 프로그램의 생성자에서 검색 키워드를 포함하고 있는 인수가 있는지 여부를 파악해야 합니다.
try { ApplicationManager.getApplicationManager().runApplication(new ApplicationDescriptor(myAppDes[0], new String[]{keywords})); } catch(ApplicationManagerException e) { // Process the error condition } } } - 프로그램 클래스에서 net.rim.device.api.system.GlobalEventListener 패키지를 가져와서 글로벌 이벤트를 수신합니다.
import net.rim.device.api.system.GlobalEventListener;
- UiApplication 클래스를 가져옵니다.
import net.rim.device.api.ui.UiApplication;
- 5단계에서 만든 것과 같은 글로벌 이벤트를 수신하도록 프로그램을 등록하고, 첫 번째 화면을 표시합니다.
public class MySearchProviderApp extends UiApplication implements GlobalEventListener { public MySearchProviderApp(String searchKeywords) { addGlobalEventListener(this); pushScreen(new MySearchScreen(searchKeywords)); } - 글로벌 이벤트에 응답하도록 eventOccured()를 구현합니다.
public void eventOccurred(long guid, int data0, int data1, Object object0, Object object1) { - 프로그램이 단말기에서 실행되고 있으면 기존 화면을 닫고 다른 화면을 표시합니다.
if(guid == G53DDE84S97JHVEK390) { if(object0 instanceof String) { popScreen(); pushScreeen(new MySearchScreen((String) object0)); requestForeground(); } } } - main 메소드의 인수에서 검색 키워드를 테스트합니다. 주어진 키워드를 사용하여 프로그램을 시작합니다. 키워드가 주어지지 않은 경우에는 빈 문자열을 사용하여 프로그램을 시작합니다.
public static void main(String[] args) { String searchKeywords = ""; if(args != null && args.length > 0) { searchKeywords = args[0]; } MySearchProviderApp app = new MySearchProviderApp(searchKeywords); app.enterEventDispatcher(); } }
다음 주제: 단말기가 시작될 때 데이터 삽입
이전 주제: 다른 검색 엔진 사용