您的位置:首页 > 其它

017、SearchManager的使用

2013-09-27 21:43 405 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: