Android的本地搜索 [英] Android local search
问题描述
我想实现我的活动本地搜索。我已经添加了一个合适的意图过滤器和元数据标签清单文件,但如果我点击搜索按钮,它会调用标准的Android搜索框。什么是我的问题?
清单文件:
< XML版本=1.0编码=UTF-8&GT?;
<舱单
的xmlns:机器人=http://schemas.android.com/apk/res/android
包=com.nixsolutions.invertigation.android.dataprovider
安卓版code =1
机器人:VERSIONNAME =1.0>
<应用
机器人:图标=@可绘制/图标
机器人:标签=@字符串/ APP_NAME
机器人:可调试=真正的>
<供应商
机器人:名称=NoteProvider
机器人:当局=com.nixsolutions.investigation.android.NoteProvider>
< /供应商>
<活动
机器人:名称=NotesList>
<意向滤光器>
<作用
机器人:名称=android.intent.action.MAIN/>
<类别
机器人:名称=android.intent.category.LAUNCHER/>
&所述; /意图滤光器>
<意向滤光器>
<作用
机器人:名称=android.intent.action.SEARCH/>
<类别
机器人:名称=android.intent.category.DEFAULT/>
&所述; /意图滤光器>
&所述;元数据
机器人:名称=android.app.searchable
机器人:资源=@ XML /搜索/>
< /活性GT;
< /用途>
<用途-SDK
安卓的minSdkVersion =7/>
< /舱单>
searchable.xml:
< XML版本=1.0编码=UTF-8&GT?;
<可搜索的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:标签=自定义搜索
机器人:提示=自定义提示
机器人:搜索模式=showSearchLabelAsBadge
/>
我想你也需要一个活动标记(应用层)的一个是提供搜索,通过:
<元数据的android:LoremSearch:NAME =android.app.default_searchable机器人值= />
(代以正确的价值安卓值
)
例如:
<应用机器人:图标=@可绘制/图标机器人:标签=@字符串/ APP_NAME
机器人:可调试=真正的机器人:allowBackup =真
>
<元数据的android:NAME =android.app.default_searchable
MySearchActivity:机器人值= />
<活动机器人:MySearchActivityNAME =>
<意向滤光器>
<作用机器人:名称=android.intent.action.SEARCH/>
&所述; /意图滤光器>
<元数据的android:NAME =android.app.searchable
机器人:资源=@ XML /搜索/>
< /活性GT;
您已经为活动指定的唯一的方式,既能够使该活动范围内搜索。 只有在添加应用程序级元数据标签能够搜索所有活动。
看到这里获得一个完整的搜索项目。
I'm trying to implement a local search in my activity. I've added an appropriate intent filter and metadata tag to manifest file but if I click Search button it invokes standard android search box. What's my problem?
Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nixsolutions.invertigation.android.dataprovider"
android:versionCode="1"
android:versionName="1.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<provider
android:name="NoteProvider"
android:authorities="com.nixsolutions.investigation.android.NoteProvider">
</provider>
<activity
android:name="NotesList">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action
android:name="android.intent.action.SEARCH" />
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
</application>
<uses-sdk
android:minSdkVersion="7" />
</manifest>
searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="Custom search"
android:hint="Custom hint"
android:searchMode="showSearchLabelAsBadge"
/>
I think you also need an activity flagged (on application level) as the one that is offering the search, via:
<meta-data android:name="android.app.default_searchable" android:value=".LoremSearch" />
(substituting in the proper value for android:value
)
E.g.:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true" android:allowBackup="true"
>
<meta-data android:name="android.app.default_searchable"
android:value=".MySearchActivity" />
<activity android:name=".MySearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
The way you have specified for an activity only, only enables search within that activity. Only adding the meta-data tag at application level enables search for all activities.
See here for a complete search project.
这篇关于Android的本地搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!