如果你的APP有搜索数据的功能,可以给程序加个类似于系统自带的搜索功能,按搜索键,会在屏幕顶部弹出一个输入框,可以搜索短信、音乐、联系人、网页等等。下面就来实现。 首先,我们要在AndroidManifest.xml给我们的Activity加上一个intent-filter:
<intent-filter>
<action android:name="android.intent.action.SEARCH"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
<!-- 上面的intent-filter就是用来匹配搜索功能的,下面一行指定的是搜索框配置文件 -->
<meta-data android:name="android.app.searchable" android:resource="@xml/search"/>
这样,当用户按下搜索键时,系统就会弹出搜索框以及软键盘,等待用户输入。 下面是xml/search.xml源代码(新键-Android XML File,选择Searchable就可以创建):
<?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/search_label"
android:hint="@string/search_hint"
>
</searchable>
<!--
label:标签,可以任意填
hint:输入框中的提示
经测试,这两个值必须引用string,直接写死就不会跳出搜索框
-->
上面的两个值先写进strings.xml中。 下面是程序中获取用户输入字符串的方法:
package com.pocketdigi.search;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
//得到Intent对象
String action = intent.getAction();
//得到action值
if (Intent.ACTION_SEARCH.equals(action))
{//如果是搜索的action
String query = intent.getStringExtra(SearchManager.QUERY);
//得到查询关键字
System.out.println(query);
}
}
}
另外,如果需要在程序中触发弹出搜索框而不是按Search键,可以使用下面的Java代码
onSearchRequested();
附上打包源文件: [download id=”17”]