검색은 Android의 핵심적인 사용자 기능입니다. 사용자는 콘텐츠가 기기에 있는지 인터넷에 있는지에 관계없이 사용 가능한 모든 데이터를 검색할 수 있어야 합니다. 사용자를 위한 일관된 검색 환경을 만드는 데 도움을 주기 위해 Android는 애플리케이션의 검색을 구현하는 데 유용한 검색 프레임워크를 제공합니다.

그림 1. 검색 대화상자의 맞춤 추천 검색어 스크린샷
검색 프레임워크는 두 가지 검색어 입력 모드, 즉 화면 상단의 검색 대화상자와 활동 레이아웃에 삽입할 수 있는 검색 위젯(SearchView
)을 제공합니다. 어느 경우든 Android 시스템은 검색을 실행하는 특정 활동에 검색어를 전달하여 검색 구현을 지원합니다. 사용자가 입력할 때 검색 대화상자 또는 위젯에서 추천 검색어를 제공하도록 설정할 수도 있습니다. 그림 1은 선택적 추천 검색어가 표시된 검색 대화상자의 예를 보여줍니다.
검색 대화상자나 검색 위젯을 설정한 후에는 다음을 할 수 있습니다.
- 음성 검색 사용 설정하기
- 최근 사용자 쿼리를 기반으로 추천 검색어 제공하기
- 애플리케이션 데이터의 실제 결과와 일치하는 맞춤 추천 검색어 제공하기
- 시스템 전체의 빠른 검색창에 애플리케이션의 추천 검색어 제공하기
참고: 검색 프레임워크는 개발자의 데이터를 검색하는 API를 제공하지 않습니다. 검색을 실행하려면 데이터에 적합한 API를 사용해야 합니다. 예를 들어 데이터가 SQLite 데이터베이스에 저장되는 경우 android.database.sqlite
API를 사용하여 검색을 실행해야 합니다.
또한 기기에서 애플리케이션의 검색 인터페이스를 호출하는 전용 검색 버튼을 제공한다는 보장이 없습니다. 검색 대화상자 또는 맞춤 인터페이스를 사용할 때는 UI에 검색 인터페이스를 활성화하는 검색 버튼을 제공해야 합니다. 자세한 내용은 검색 대화상자 호출하기를 참고하세요.
다음 문서는 Android 프레임워크를 사용하여 검색을 구현하는 방법을 보여줍니다.
- 검색 인터페이스 만들기
- 검색 대화상자나 검색 위젯을 사용하도록 애플리케이션을 설정하는 방법입니다.
- 최근 검색어 추천 추가
- 이전에 사용한 쿼리를 기반으로 추천 검색어를 제공하는 방법입니다.
- 맞춤 제안 추가
- 애플리케이션의 맞춤 데이터를 기반으로 추천 검색어를 제공하고 시스템 전체의 빠른 검색창에서도 제공하는 방법입니다.
- 검색 가능한 구성
- 검색 가능한 구성 파일에 관한 참조 문서입니다. 다른 문서에서도 특정 동작과 관련한 구성 파일에 대해 설명합니다.
사용자 개인정보 보호
애플리케이션에서 검색을 구현할 때 사용자의 개인정보를 보호하기 위한 조치를 취합니다. 많은 사용자가 스마트폰에서 하는 활동(검색 포함)을 비공개 정보라고 생각합니다. 각 사용자의 개인정보를 보호하기 위해 다음 원칙을 준수해야 합니다.
- 개인정보를 서버에 전송하지 말고 꼭 해야 하는 경우에는 로그에 기록하지 않습니다.
개인정보는 사용자를 식별할 수 있는 모든 정보로서 이름, 이메일 주소, 결제 정보 또는 이러한 정보와 연관이 있다고 판단할 수 있는 기타 데이터가 포함됩니다. 애플리케이션이 서버의 도움으로 검색을 구현하는 경우 검색어와 함께 개인정보를 보내지 마세요. 예를 들어 우편번호 근처의 업체를 검색하는 경우 사용자 ID도 전송할 필요는 없습니다. 우편번호만 서버에 전송하면 됩니다. 개인정보를 전송해야 하는 경우 로그에 기록해서는 안 됩니다. 반드시 로그에 기록해야 한다면 아주 신중하게 데이터를 보호하고 최대한 빨리 지웁니다.
- 사용자에게 검색 기록을 지울 방법을 제공합니다.
검색 프레임워크는 사용자가 입력하는 동안 애플리케이션이 상황에 맞는 추천 검색어를 제공하도록 돕습니다. 이러한 추천 검색어는 이전 검색어 또는 이전 세션에서 사용자가 취한 다른 작업을 기반으로 하는 경우도 있습니다. 예를 들어 사용자가 친구와 기기를 공유하는 경우 기기를 사용하는 다른 사용자에게 이전 검색어가 표시되지 않기를 원할 수 있습니다. 애플리케이션이 이전 검색 활동을 드러낼 수 있는 추천 검색어를 제공하는 경우에는 사용자가 검색 기록을 지울 수 있는 기능을 구현해야 합니다.
SearchRecentSuggestions
를 사용 중인 경우clearHistory()
메서드를 호출할 수 있습니다. 맞춤 추천 검색어를 구현하는 경우에는 사용자가 실행할 수 있는 비슷한 '기록 지우기' 메서드를 콘텐츠 제공자에 제공해야 합니다.