Android的本地搜索 [英] Android local search

查看:124
本文介绍了Android的本地搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现我的活动本地搜索。我已经添加了一个合适的意图过滤器和元数据标签清单文件,但如果我点击搜索按钮,它会调用标准的Andr​​oid搜索框。什么是我的问题?

清单文件:

 < XML版本=1.0编码=UTF-8&GT?;
<舱单
的xmlns:机器人=htt​​p://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:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆