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); }