博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

017、SearchManager的使用

Posted on 2013-09-27 21:43  mz_zyh  阅读(1093)  评论(0编辑  收藏  举报
SearchManager是Android提供搜索的API
使用SearchManager对象,必须先在AndroidManifest.xml文件里面编写<intent-filter>,使之可以过滤“android.intent.action.SEARCH”广播信息,再在应用程序中建立SearchManager对象。
在AndroidManifest.xml文件中的配置:
        <activity
            android:name="com.example.ex_4_29_searchmanager.MainActivity"
            android:label="@string/app_name" >
            <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>

 

其中,引用的android:resource="@xml/searchable" 文件如下:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="@string/search_hint"
    android:label="@string/search_label" />

 

在应用程序代码中的使用:
        // 需要在AndroidManifest.xml文件里先添加SEARCH的intent-filter
        Intent intent = getIntent();
        // 取得当按下搜索时的Intent
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            // 取得欲搜索的字符串
            String extra = intent.getStringExtra(SearchManager.QUERY);
            queryPicture(extra);
        }
        // 设置后,点击键盘会弹出搜索框
        setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);

 

上例是是搜索本地数据,也可以实现对网络数据的搜索,代码如下:

 

                String trim = ((EditText) findViewById(R.id.et)).getText()
                        .toString().trim();
                if (TextUtils.isEmpty(trim)) {
                    Toast.makeText(MainActivity.this, "得输入内容才可以搜索哦", 0).show();
                } else {
                    //取得网页搜索的Intent
                    Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    //放入所要搜索的文字
                    intent.putExtra(SearchManager.QUERY, trim);
                    Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
                    if(appData!=null){
                        intent.putExtra(SearchManager.APP_DATA, appData);
                    }
                    startActivity(intent);
                }