使用此代码,我可以清除 google playstore 应用程序中的最近查询:
SearchRecentSuggestions query = new SearchRecentSuggestions(this, "com.google.android.finsky.RecentSuggestionsProvider", 1);
query.clearHistory();
但是,如何使用最近的查询?(例如:在 TextView 中显示第一个查询)
使用此代码,我可以清除 google playstore 应用程序中的最近查询:
SearchRecentSuggestions query = new SearchRecentSuggestions(this, "com.google.android.finsky.RecentSuggestionsProvider", 1);
query.clearHistory();
但是,如何使用最近的查询?(例如:在 TextView 中显示第一个查询)
默认情况下,查询附加为 uri 参数(一个 Uri 对象)的最后一段。在这种情况下,要检索查询文本,只需使用 getLastPathSegment()。例如:
字符串查询 = uri.getLastPathSegment().toLowerCase();
例如,您可以通过以下方式形成 android:searchSuggestSelection 属性来创建全文搜索语句:
`
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_label"
android:hint="@string/search_hint"
android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestSelection="word MATCH ?">
</searchable>
` 使用此配置,您的 query() 方法将选择参数传递为“单词 MATCH?” 和 selectionArgs 参数作为搜索查询。当您将它们传递给 SQLite query() 方法时,它们作为各自的参数,它们被合成在一起(问号被替换为查询文本)。如果您选择以这种方式接收建议查询并且需要将通配符添加到查询文本,请将它们附加(和/或前缀)到 selectionArgs 参数,因为此值包含在引号中并插入到问号的位置。
上例中的另一个新属性是 android:searchSuggestIntentAction,它定义了用户选择建议时随每个意图发送的意图操作。将在“声明建议意图”一节中进一步讨论。