내 앱에 SearchManager으로 구현 된 두 가지 검색 활동이 있습니다. 하나는 전체 앱에서 검색 가능한 기본값이고 다른 하나는 하나의 활동에만 사용됩니다. 이 두 검색은 서로 다른 데이터의 검색을 수행하며 서로 다른 두 검색에 검색 기록을 공유하는 것은 의미가 없습니다. 앱 내에서 서로 다른 두 가지 검색 기능이 기능적으로 잘 작동하고 있으며 최근 검색 기록이 있습니다.Android 앱의 SearchRecentSuggestionsProvider 클래스를 여러 개 사용할 수 있습니까?
두 개의 서로 다른 SearchRecentSuggestionsProvider 클래스가 앱 내에 정의되어 있지만 하나의 검색은 두 검색의 최근 검색 제안 기록에 모두 표시됩니다. 개발자 가이드의 SearchManager 주제를 읽었지만 여러 제안 제공자에 대한 정보는 볼 수 없습니다. 여기
노드에서의 AndroidManifest.xml에있는 두 개의 업체입니다 가package com.company;
import android.content.SearchRecentSuggestionsProvider;
public class SearchOneRecentSuggestionsProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "com.company.SearchOneRecentSuggestionsProvider";
public final static int MODE = DATABASE_MODE_QUERIES;
public SearchOneRecentSuggestionsProvider() {
setupSuggestions(AUTHORITY, MODE);
}
}
합니다 (SearchTwoRecentSuggestionsProvider 클래스는 정확히 같은 모양 : 여기
<provider android:name=".SearchOneRecentSuggestionsProvider"
android:authorities="com.company.SearchOneRecentSuggestionsProvider"></provider>
<provider android:name=".SearchTwoRecentSuggestionsProvider"
android:authorities="com.company.SearchTwoRecentSuggestionsProvider"></provider>
이 SearchOneRecentSuggestionsProvider.java에 정의 된 클래스의 One with Two를 제외하고는 자신의 SearchTwoRecentSuggestionsProvider.java 파일에 있습니다.)
(/data/data/com.company/databases/suggestions.db에서) 검색 제안 데이터베이스 내부 :
SearchRecentSuggestionsProvider에 대한 열이 없습니다# sqlite3 suggestions.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
android_metadata suggestions
sqlite> .schema suggestions
CREATE TABLE suggestions (_id INTEGER PRIMARY KEY,display1 TEXT UNIQUE ON CONFLICT REPLACE,query TEXT,date LONG);
sqlite> select * from suggestions;
1|searchone|searchone|1296177852444
2|searchtwo|searchtwo|1296177878744
, 그래서 아마도이 개 검색의 역사를 분리 할 수있는 방법이 없습니다 ?
두 가지 검색 중 하나에서 검색을 수행하면 최근 검색 기록 제안에서 searchone과 searchtwo가 모두 표시됩니다. 나는 가능하다면 각자 자신의 역사가 있기를 바란다. 잘만되면 나는 바보 같은 것을 놓치지 않았다! 이것을 읽어 주셔서 감사합니다.
답변을 주셔서 감사합니다. 또한 소스 코드를 살펴본 결과 db 이름이 하드 코드 된 것을 확인했습니다. 방금 내가 간단한 것을 놓치기를 바랐다. 동료들과 함께 해결 방법에 대한 제안을 논의하고 이것이 우리에게 도움이되는지 확인해 보겠습니다. –
하드 코드 된 db 이름은 무엇입니까? –