小编Mar*_*ein的帖子

可以在Android应用中使用多个SearchRecentSuggestionsProvider类吗?

我在我的应用程序中使用SearchManager实现了两个不同的搜索活动.一个是整个应用程序的默认搜索,另一个仅用于一个活动.这两个搜索执行不同数据的查找,并且在两个不同的搜索中共享搜索历史没有意义.这两个不同的搜索在应用程序中功能正常,我的问题是最近的搜索历史.

问题是在应用程序中定义了两个不同的SearchRecentSuggestionsProvider类,但是在一个搜索的最近搜索建议历史记录中显示了一个搜索.我已阅读开发指南中的SearchManager主题,但未看到有关多个建议提供程序的任何信息.

以下是AndroidManifest.xml中节点中的两个提供程序:

<provider android:name=".SearchOneRecentSuggestionsProvider"
 android:authorities="com.company.SearchOneRecentSuggestionsProvider"></provider>
<provider android:name=".SearchTwoRecentSuggestionsProvider"
    android:authorities="com.company.SearchTwoRecentSuggestionsProvider"></provider>
Run Code Online (Sandbox Code Playgroud)

这是SearchOneRecentSuggestionsProvider.java中定义的类:

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);
     }
    }
Run Code Online (Sandbox Code Playgroud)

(SearchTwoRecentSuggestionsProvider类看起来完全相同,除了替换One with Two并且在它自己的SearchTwoRecentSuggestionsProvider.java文件中.)

以下是搜索建议数据库中的内容(位于/data/data/com.company/databases/suggestions.db):

# 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); …
Run Code Online (Sandbox Code Playgroud)

search android android-searchmanager

9
推荐指数
1
解决办法
1906
查看次数

标签 统计

android ×1

android-searchmanager ×1

search ×1