为Android应用添加搜索功能

合集下载

Android权限(permission)整理

Android权限(permission)整理

Android权限(permission)整理在Android的设计中,资源的访问或者⽹络连接,要得到这些服务都需要声明其访问权限,否则将⽆法正常⼯作。

在Android中这样的权限有很多种,这⾥将各类访问权限⼀⼀罗列出来,供⼤家使⽤时参考之⽤。

1.android.permission.WRITE_USER_DICTIONARY允许应⽤程序向⽤户词典中写⼊新词2.android.permission.WRITE_SYNC_SETTINGS写⼊Google在线同步设置3.android.permission.WRITE_SOCIAL_STREAM读取⽤户的社交信息流4.android.permission.WRITE_SMS允许程序写短信5.android.permission.WRITE_SETTINGS允许程序读取或写⼊系统设置6.android.permission.WRITE_SECURE_SETTINGS允许应⽤程序读取或写⼊安全系统设置7.android.permission.WRITE_PROFILE允许程序写⼊个⼈资料数据.android.browser.permission.WRITE_HISTORY_BOOKMARKS允许⼀个应⽤程序写(但不可读)⽤户的浏览历史和书签9.android.permission.WRITE_GSERVICES允许程序修改Google服务地图10.android.permission.WRITE_EXTERNAL_STORAGE允许程序写⼊外部存储,如SD卡上写⽂件11.android.permission.WRITE_CONTACTS写⼊联系⼈,但不可读取12.android.permission.WRITE_CALL_LOG允许程序写⼊(但是不能读)⽤户的联系⼈数据13.android.permission.WRITE_CALENDAR允许程序写⼊⽇程,但不可读取14.android.permission.WRITE_APN_SETTINGS允许程序写⼊⽹络GPRS接⼊点设置15.android.permission.WAKE_LOCK允许程序在⼿机屏幕关闭后后台进程仍然运⾏16.android.permission.VIBRATE允许程序振动E_SIP允许程序使⽤SIP视频服务E_CREDENTIALS允许程序请求验证从AccountManager19.android.permission.UPDATE_DEVICE_STATS允许程序更新设备状态uncher.permission.UNINSTALL_SHORTCUT删除快捷⽅式21.android.permission.TRANSMIT_IR允许使⽤设备的红外发射器,如果可⽤22.android.permission.SYSTEM_ALERT_WINDOW允许程序显⽰系统窗⼝23.android.permission.SUBSCRIBED_FEEDS_WRITE允许程序写⼊或修改订阅内容的数据库24.android.permission.SUBSCRIBED_FEEDS_READ允许程序访问订阅信息的数据库22.android.permission.STATUS_BAR允许程序打开、关闭、禁⽤状态栏23.android.permission.SIGNAL_PERSISTENT_PROCESSES允许程序发送⼀个永久的进程信号24.android.permission.SET_WALLPAPER_HINTS允许程序设置壁纸建议25.android.permission.SET_WALLPAPER允许程序设置桌⾯壁纸26.android.permission.SET_TIME_ZONE允许程序设置系统时区27.android.permission.SET_TIME允许程序设置系统时间28.android.permission.SET_PROCESS_LIMIT允许程序设置最⼤的进程数量的限制29.android.permission.SET_PREFERRED_APPLICATIONS允许程序设置应⽤的参数,已不再⼯作具体查看addPackageToPreferred(String) 介绍30.android.permission.SET_POINTER_SPEED⽆法被第三⽅应⽤获得,系统权限31.android.permission.SET_ORIENTATION允许程序设置屏幕⽅向为横屏或标准⽅式显⽰,不⽤于普通应⽤32.android.permission.SET_DEBUG_APP允许程序设置调试程序,⼀般⽤于开发33.android.permission.SET_ANIMATION_SCALE允许程序设置全局动画缩放34.android.permission.SET_ALWAYS_FINISH允许程序设置程序在后台是否总是退出.android.alarm.permission.SET_ALARM允许程序设置闹铃提醒37.android.permission.SET_ACTIVITY_WATCHER允许程序设置Activity观察器⼀般⽤于monkey测试38.android.permission.SEND_SMS允许程序发送短信39.android.permission.SEND_RESPOND_VIA_MESSAGE允许⽤户在来电的时候⽤你的应⽤进⾏即时的短信息回复。

android利用数据库实现搜索联想功能

android利用数据库实现搜索联想功能

public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
String query = null;
if (uri.getPathSegments().size() > 1) {
SearchUtil.Word theWord = SearchUtil.getInstance().getMatches(
intent.getDataString().trim().toLowerCase()).get(0);
launchWord(theWord);
finish();
onSearchRequested();
return false;
}
});
}
}
private void launchWord(SearchUtil.Word pavilion) {
Intent next = new Intent();
return new Object[] { id, // _id
word.word, // text1
word.definition, // text2
word.word, // intent_data (included when clicking on item)
};
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {

安卓移动应用开发设计报告

安卓移动应用开发设计报告

安卓移动应用开发设计报告引言移动应用的快速发展为人们的生活带来了极大的便利。

而安卓作为最受欢迎的移动操作系统之一,其移动应用的开发和设计也备受关注。

本文将介绍一种基于安卓平台的移动应用开发设计方案,并对其进行详细分析。

设计概述本项目旨在开发一款功能丰富、界面友好、稳定可靠的安卓移动应用。

通过该应用,用户可以轻松实现特定功能,并享受到更加便捷的移动体验。

开发工具与环境我们选择使用Android Studio作为开发工具,因为它是一个强大的开发环境,能提供丰富的功能和易于使用的界面。

此外,Android Studio 还具备强大的模拟器,能够帮助开发者进行测试和调试。

在开发过程中,我们将使用Java作为主要的编程语言。

Java是一种跨平台的语言,具有广泛的使用性和流行度。

此外,我们还将充分利用Android Studio提供的各种API和组件,以实现所需的功能。

功能需求基于用户的需求,我们将开发以下核心功能:1. 用户登录:用户可以使用个人账号进行登录,以便访问个人信息和使用特定功能。

2. 数据存储:应用将使用本地数据库或云端存储用户的个人信息和设置,以确保数据的安全和隐私。

3. 消息通知:应用可以向用户发送各种通知消息,如提醒、新消息等。

4. 搜索功能:用户可以通过关键字搜索应用内的特定内容,以快速定位所需信息。

5. 计算器功能:应用内集成基础计算器,方便用户进行简单的数学运算。

6. 地图导航:应用可以实现基本的地图导航功能,提供路线规划和实时导航服务。

7. 支付功能:用户可以在应用内完成支付操作,方便快捷地进行在线购物或付款。

界面设计我们将注重应用的界面设计,力求简洁、直观、易用。

通过良好的界面设计,提高用户的使用体验和满意度。

在设计过程中,我们将主要关注以下几个方面:1. 色彩搭配:选择合适的颜色搭配,以保证界面的美观和舒适感。

2. 图标设计:使用具有代表性和易于识别的图标,增加应用的易用性。

AndroidStudio搜索功能(查找功能)及快捷键图文详解

AndroidStudio搜索功能(查找功能)及快捷键图文详解

AndroidStudio搜索功能(查找功能)及快捷键图⽂详解1、在当前窗⼝查找⽂本【Ctrl+F】
F3 向下查找关键字出现位置
Shift+F3 向上⼀个关键字出现位置
2、在当前⼯程内查找⽂本【Ctrl+Shift+F】
先会弹出⼀个对话框,直接点击【find】,开始在整个⼯程内查找该字符串
查找结果如下:
3、查找类【Ctrl+N】
4、查找⽂件【Ctrl+Shift+N】
5、查找项⽬中的⽅法或变量【Ctrl+Shift+Alt+N】
6、查找类/⽅法/变量引⽤的地⽅
先定位光标
右键选择“Find Usages”(快捷键Alt+F7)
结果在find窗⼝中
ctrl+F7就是该⽅法在当前类中的被使⽤到的地⽅7、ctrl + o 查看所有可以重写的⽅法。

8、在类中快速定位某个⽅法或属性Ctrl+F12
总结
以上所述是⼩编给⼤家介绍的Android Studio搜索功能(查找功能)及快捷键图⽂详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

在此也⾮常感谢⼤家对⽹站的⽀持!。

android edittext 用法

android edittext 用法

android edittext 用法【Android EditText 用法】从基础到高级,一步一步讲解引言:在Android的开发中,EditText是一个非常常用的控件,它允许用户通过键盘输入文本。

本文将详细介绍EditText的使用方法,包括基础的使用、属性设置、事件监听以及一些实际场景中的应用。

第一部分:基础的EditText使用1. 在布局文件中添加EditText首先,在xml布局文件中添加EditText控件,可以使用以下代码:<EditTextandroid:id="@+id/editText"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入文本"android:inputType="text"/>这段代码创建了一个EditText控件,设置了其宽度为match_parent,高度为wrap_content。

同时,我们使用了hint属性,当EditText没有内容时,会显示一个提示文本,方便用户输入。

2. 获取EditText的值为了获取EditText中输入的值,我们需要在Java代码中找到EditText控件,并使用getText()方法。

以下是一个示例代码:EditText editText = findViewById(R.id.editText);String text = editText.getText().toString();这段代码首先通过findViewById找到了id为editText的EditText控件,然后使用getText()方法获取到EditText中的内容,并通过toString()方法来将其转换为字符串。

toolbar的用法

toolbar的用法

Toolbar的用法1. 什么是Toolbar?Toolbar(工具栏)是一种常见的用户界面组件,通常位于应用程序的顶部或底部,用于提供快速访问常用功能和操作。

Toolbar通常包含图标按钮、文本按钮、下拉菜单等,用于执行特定的操作或导航到其他页面。

在移动应用程序中,Toolbar通常位于屏幕的顶部,用于显示应用程序的标题、导航按钮、搜索框以及其他常用操作。

2. Toolbar的使用场景Toolbar适用于各种应用程序,尤其是那些需要提供快速访问常用功能和操作的应用程序。

以下是一些常见的使用场景:•导航:Toolbar通常包含导航按钮,用于在不同的页面之间切换。

导航按钮可以是返回按钮、菜单按钮或其他自定义按钮。

•搜索:Toolbar可以包含搜索框,使用户可以快速搜索应用程序中的内容或进行其他相关操作。

•操作:Toolbar可以包含各种操作按钮,用于执行特定的功能或操作。

例如,编辑按钮、分享按钮、设置按钮等。

•过滤器:Toolbar可以包含过滤器按钮,用于筛选显示的内容。

用户可以选择不同的过滤器选项,以查看特定类型的内容。

3. Toolbar的基本结构在Android应用程序中,Toolbar是由Toolbar类表示的。

它是ViewGroup的子类,可以包含其他视图组件,如按钮、文本视图等。

Toolbar通常包含以下几个主要部分:•标题:Toolbar可以显示应用程序的标题,通常位于屏幕的中间位置。

标题可以是文本或图标。

•导航按钮:Toolbar可以包含导航按钮,用于返回上一个页面或打开侧边栏菜单。

导航按钮通常位于标题的左边。

•操作按钮:Toolbar可以包含操作按钮,用于执行特定的功能或操作。

操作按钮可以是图标按钮或文本按钮,通常位于标题的右边。

•溢出菜单:如果Toolbar上的操作按钮太多无法一次显示完全,可以使用溢出菜单来显示更多的操作选项。

•搜索框:Toolbar可以包含搜索框,使用户可以快速搜索应用程序中的内容。

Android---浮动搜索框(SearchManager)(An-Beer工作室)

Android---浮动搜索框(SearchManager)(An-Beer工作室)

浮动搜索框的使用其实并不难,而是在于它的配置非常之繁琐,对于它的使用主要是方便开发者对于程序中有搜索业务时,更好的设计UISearchM anager具体使用步骤如下:(1)配置s earc h bar的相关信息,新建一个位于res/xml下的一个s earchable.xml的配置文件,如默认值、是否有搜索建议或者语音搜索。

代码<searchable xmlns:android=/apk/ res/android<!-- label为搜索框上方的文本,hint搜索框里面的提示文本,显示label -->android:label="@string/search_label"android:hint="@string/search_hint"android:searchMode="showSearchLabelAsBadge"<!-- 语音搜索配置 -->android:voiceSearchMode="showVoiceSearchButton|launchR ecognizer"android:voiceLanguageModel="free_form"android:voicePromptText="@string/search_invoke"<!-- 配置搜索建议,配置错误将不会显示,这里的searchSuggestAut hority的值必须是继承自SearchRecentSuggestionsProvider的完整路径名-->android:searchSuggestAuthority="com.android.cbin.Sea rchSuggestionSampleProvider"android:searchSuggestSelection=" ? "/>(2) manifest.xml配置,搜索结果处理的Ac tivity将出现两种情况,一种是从其他Ac tivity中的s earc h bar打开一个A ctivtiy 专门处理搜索结果,第二种是就在当前Ac tivity就是处理结果的Ac tivity,先介绍第一种配置:代码<activity android:name="SearchResultActivity"><intent-filter><action android:name="android.intent.action.SEA RCH"></action></intent-filter><!-- 指定上面的searchable.xml文件 --><meta-data android:resource="@xml/searchable"android:name="android.app.searchable"></me ta-data></activity><!-- 为了使每一个Activity都能使用search bar,一定要将这个标签放到启动Activity中,里面的value指定的是前面的搜索结果Activity--><meta-data android:name="android.app.default_searchable" android:value=".SearchResultActivity" />(3)搜索建议在manifest.xml中相关的配置<!--之前searchable.xml中有一个searchSuggestAuthority的值其实和这里的authorities指向的都是name中所关联的SearchSuggestionSamplePr ovider,他是一个SearchRecentSuggestionsProvider的子类--><provider android:name="SearchSuggestionSampleProvider"android:authorities="com.android.cbin.SearchSuggestionS ampleProvider"></provider>上面authorities指向的都是name中所关联的Searc hSuggestionSampleP rovider,他是一个SearchRecentSuggestionsProvider的子类代码public class SearchSuggestionSampleProvider extendsSearchRecentSuggestionsProvider {final static String AUTHORITY="com.android.cbin.Search SuggestionSampleProvider";final static int MODE=DATABASE_MODE_QUERIES;public SearchSuggestionSampleProvider(){super();setupSuggestions(AUTHORITY, MODE);}}(4)为了能够使用s earc h bar 我们必须重写Ac tivity的onSearc hRequested的方法,在界面上启动一个s earch bar但是这个动作不会自动触发,必须通过一个按钮或者菜单的点击事件触发;代码@Overridepublic boolean onSearchRequested(){String text=etdata.getText().toString();Bundle bundle=new Bundle();bundle.putString("data", text);//打开浮动搜索框(第一个参数默认添加到搜索框的值)//bundle为传递的数据startSearch("mm", false, bundle, false);//这个地方一定要返回真如果只是super.onSearchRequested 方法不但//onSearchRequested(搜索框默认值)无法添加到搜索框中,bu ndle也无法传递出去return true;}(5)接收query和bundle、保存query值(即搜索建议的列表值)代码public void doSearchQuery(){final Intent intent = getIntent();//获得搜索框里值String query=intent.getStringExtra(SearchManager.QU ERY);tvquery.setText(query);//保存搜索记录SearchRecentSuggestions suggestions=new SearchRecentSuggestions(this,SearchSuggestionSampleProvider.AUTHORITY, Se archSuggestionSampleProvider.MODE);suggestions.saveRecentQuery(query, null);if(Intent.ACTION_SEARCH.equals(intent.getAction())) {//获取传递的数据Bundle bundled=intent.getBundleExtra(SearchMana ger.APP_DATA);if(bundled!=null){String ttdata=bundled.getString("data");tvdata.setText(ttdata);}else{tvdata.setText("no data");}}}之前说到了处理结果的Ac tivity将可能出现的两种情况的两种,现在就处理第二种状况,就是假如invoke search bar的Activity同时也是处理搜索结果的Ac tivity,如果按照之前的方式处理则会出现一种情况,搜索一次就实例化一次Ac tivity,当按返回键的时候会发现老是同一个A ctivity,其实为了使它只有一个实例化对象,只需简单的配置和代码就能实现第一:在处理搜索结果Ac tivity的manif es t.xml中添加android:launc hMode="s ingleTop"属性第二:重写Ac tivity的onN ew I ntent(I ntent intent)代码@Overridepublic void onNewIntent(Intent intent){super.onNewIntent(intent);//获得搜索框里值String query=intent.getStringExtra(SearchManager.QU ERY);tvquery.setText(query);//保存搜索记录SearchRecentSuggestions suggestions=new SearchRecen tSuggestions(this,SearchSuggestionSampleProvider.AUTHORITY, Se archSuggestionSampleProvider.MODE);suggestions.saveRecentQuery(query, null);if(Intent.ACTION_SEARCH.equals(intent.getAction())) {//获取传递的数据Bundle bundled=intent.getBundleExtra(SearchMana ger.APP_DATA);if(bundled!=null){String ttdata=bundled.getString("data");tvdata.setText(ttdata);}else{tvdata.setText("no data");}}}相关知识:上面讲到了将最近的搜索值添加到搜索建议中,但却没有提到如果清理搜索建议中的值,与保存相似,Searc hRecentSugg es tion对象提供了一个c learHis tory()方法代码private void clearSearchHistory() {SearchRecentSuggestions suggestions = new SearchRec entSuggestions(this,SearchSuggestionSampleProvider.AUTHORITY, Se archSuggestionSampleProvider.MODE);suggestions.clearHistory();}忘了上效果图:oye。

Android应用的权限配置和权限列表

Android应用的权限配置和权限列表

Android应⽤的权限配置和权限列表权限配置写在Mainifest.xml⽂件中:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.mxmtxtreader"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="21" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.GET_PACKAGE_SIZE" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".BookActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity><activityandroid:name=".ReadingActivity"android:label="@string/app_name" ></activity><activityandroid:name=".ImportBook"android:label="@string/menu_import" ></activity></application></manifest>可配置的权限列表如下:访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写⼊登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的⽅式获取⽤户错略的经纬度信息,定位精度⼤概误差在30~1500⽶获取精确位置android.permission.ACCESS_FINE_LOCATION,通过GPS芯⽚接收卫星的定位信息,定位精度达10⽶以内访问定位额外命令android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允许程序访问额外的定位提供者指令获取模拟定位信息android.permission.ACCESS_MOCK_LOCATION,获取模拟定位信息,⼀般⽤于帮助开发者调试应⽤获取⽹络状态android.permission.ACCESS_NETWORK_STATE,获取⽹络信息状态,如当前的⽹络连接是否有效访问Surface Flinger android.permission.ACCESS_SURFACE_FLINGER,Android平台上底层的图形显⽰⽀持,⼀般⽤于游戏或照相机预览界⾯和底层模式的屏幕截图获取WiFi状态android.permission.ACCESS_WIFI_STATE,获取当前WiFi接⼊的状态以及WLAN热点的信息账户管理android.permission.ACCOUNT_MANAGER,获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限验证账户android.permission.AUTHENTICATE_ACCOUNTS,允许⼀个程序通过账户验证⽅式访问账户管理ACCOUNT_MANAGER相关信息电量统计android.permission.BATTERY_STATS,获取电池电量统计信息绑定⼩插件android.permission.BIND_APPWIDGET,允许⼀个程序告诉appWidget服务需要访问⼩插件的数据库,只有⾮常少的应⽤才⽤到此权限绑定设备管理android.permission.BIND_DEVICE_ADMIN,请求系统管理员接收者receiver,只有系统才能使⽤绑定输⼊法android.permission.BIND_INPUT_METHOD ,请求InputMethodService服务,只有系统才能使⽤绑定RemoteView android.permission.BIND_REMOTEVIEWS,必须通过RemoteViewsService服务来请求,只有系统才能⽤绑定壁纸android.permission.BIND_WALLPAPER,必须通过WallpaperService服务来请求,只有系统才能⽤使⽤蓝⽛android.permission.BLUETOOTH,允许程序连接配对过的蓝⽛设备蓝⽛管理android.permission.BLUETOOTH_ADMIN,允许程序进⾏发现和配对新的蓝⽛设备变成砖头android.permission.BRICK,能够禁⽤⼿机,⾮常危险,顾名思义就是让⼿机变成砖头应⽤删除时⼴播android.permission.BROADCAST_PACKAGE_REMOVED,当⼀个应⽤在删除时触发⼀个⼴播收到短信时⼴播android.permission.BROADCAST_SMS,当收到短信时触发⼀个⼴播连续⼴播android.permission.BROADCAST_STICKY,允许⼀个程序收到⼴播后快速收到下⼀个⼴播WAP PUSH⼴播android.permission.BROADCAST_WAP_PUSH,WAP PUSH服务收到后触发⼀个⼴播拨打电话android.permission.CALL_PHONE,允许程序从⾮系统拨号器⾥输⼊电话号码通话权限android.permission.CALL_PRIVILEGED,允许程序拨打电话,替换系统的拨号器界⾯拍照权限android.permission.CAMERA,允许访问摄像头进⾏拍照改变组件状态android.permission.CHANGE_COMPONENT_ENABLED_STATE,改变组件是否启⽤状态改变配置android.permission.CHANGE_CONFIGURATION,允许当前应⽤改变配置,如定位改变⽹络状态android.permission.CHANGE_NETWORK_STATE,改变⽹络状态如是否能联⽹android.permission.CHANGE_WIFI_MULTICAST_STATE,改变WiFi多播状态改变WiFi多播状态改变WiFi状态android.permission.CHANGE_WIFI_STATE,改变WiFi状态清除应⽤缓存android.permission.CLEAR_APP_CACHE,清除应⽤缓存清除⽤户数据android.permission.CLEAR_APP_USER_DATA,清除应⽤的⽤户数据底层访问权限android.permission.CWJ_GROUP,允许CWJ账户组访问底层信息android.permission.CELL_PHONE_MASTER_EX,⼿机优化⼤师扩展权限⼿机优化⼤师扩展权限控制定位更新android.permission.CONTROL_LOCATION_UPDATES,允许获得移动⽹络定位信息改变删除缓存⽂件android.permission.DELETE_CACHE_FILES,允许应⽤删除缓存⽂件删除应⽤android.permission.DELETE_PACKAGES,允许程序删除应⽤电源管理android.permission.DEVICE_POWER,允许访问底层电源管理应⽤诊断android.permission.DIAGNOSTIC,允许程序到RW到诊断资源禁⽤键盘锁android.permission.DISABLE_KEYGUARD,允许程序禁⽤键盘锁转存系统信息android.permission.DUMP,允许程序获取系统dump信息从系统服务状态栏控制android.permission.EXPAND_STATUS_BAR,允许程序扩展或收缩状态栏⼯⼚测试模式android.permission.FACTORY_TEST,允许程序运⾏⼯⼚测试模式使⽤闪光灯android.permission.FLASHLIGHT,允许访问闪光灯强制后退android.permission.FORCE_BACK,允许程序强制使⽤back后退按键,⽆论Activity是否在顶层android.permission.GET_ACCOUNTS,访问GMail账户列表访问账户Gmail列表获取应⽤⼤⼩android.permission.GET_PACKAGE_SIZE,获取应⽤的⽂件⼤⼩获取任务信息android.permission.GET_TASKS,允许程序获取当前或最近运⾏的应⽤允许全局搜索android.permission.GLOBAL_SEARCH,允许程序使⽤全局搜索功能硬件测试android.permission.HARDWARE_TEST,访问硬件辅助设备,⽤于硬件测试注射事件android.permission.INJECT_EVENTS,允许访问本程序的底层事件,获取按键、轨迹球的事件流安装定位提供android.permission.INSTALL_LOCATION_PROVIDER,安装定位提供安装应⽤程序android.permission.INSTALL_PACKAGES,允许程序安装应⽤内部系统窗⼝android.permission.INTERNAL_SYSTEM_WINDOW,允许程序打开内部窗⼝,不对第三⽅应⽤程序开放此权限访问⽹络android.permission.INTERNET,访问⽹络连接,可能产⽣GPRS流量结束后台进程android.permission.KILL_BACKGROUND_PROCESSES,允许程序调⽤killBackgroundProcesses(String).⽅法结束后台进程管理账户android.permission.MANAGE_ACCOUNTS,允许程序管理AccountManager中的账户列表管理程序引⽤android.permission.MANAGE_APP_TOKENS,管理创建、摧毁、Z轴顺序,仅⽤于系统⾼级权限android.permission.MTWEAK_USER,允许mTweak⽤户访问⾼级系统权限社区权限android.permission.MTWEAK_FORUM,允许使⽤mTweak社区权限软格式化android.permission.MASTER_CLEAR,允许程序执⾏软格式化,删除系统配置信息修改声⾳设置android.permission.MODIFY_AUDIO_SETTINGS,修改声⾳设置信息修改电话状态android.permission.MODIFY_PHONE_STATE,修改电话状态,如飞⾏模式,但不包含替换系统拨号器界⾯格式化⽂件系统android.permission.MOUNT_FORMAT_FILESYSTEMS,格式化可移动⽂件系统,⽐如格式化清空SD卡挂载⽂件系统android.permission.MOUNT_UNMOUNT_FILESYSTEMS,挂载、反挂载外部⽂件系统允许NFC通讯android.permission.NFC,允许程序执⾏NFC近距离通讯操作,⽤于移动⽀持永久Activity android.permission.PERSISTENT_ACTIVITY,创建⼀个永久的Activity,该功能标记为将来将被移除处理拨出电话android.permission.PROCESS_OUTGOING_CALLS,允许程序监视,修改或放弃播出电话读取⽇程提醒android.permission.READ_CALENDAR,允许程序读取⽤户的⽇程信息读取联系⼈android.permission.READ_CONTACTS,允许应⽤访问联系⼈通讯录信息屏幕截图android.permission.READ_FRAME_BUFFER,读取帧缓存⽤于屏幕截图com.android.browser.permission.READ_HISTORY_BOOKMARKS,读取浏览器收藏夹和历史记录读取收藏夹和历史记录读取输⼊状态android.permission.READ_INPUT_STATE,读取当前键的输⼊状态,仅⽤于系统读取系统⽇志android.permission.READ_LOGS,读取系统底层⽇志读取电话状态android.permission.READ_PHONE_STATE,访问电话状态读取短信内容android.permission.READ_SMS,读取短信内容读取同步设置android.permission.READ_SYNC_SETTINGS,读取同步设置,读取Google在线同步设置读取同步状态android.permission.READ_SYNC_STATS,读取同步状态,获得Google在线同步状态重启设备android.permission.REBOOT,允许程序重新启动设备开机⾃动允许android.permission.RECEIVE_BOOT_COMPLETED,允许程序开机⾃动运⾏接收彩信android.permission.RECEIVE_MMS,接收彩信接收短信android.permission.RECEIVE_SMS,接收短信接收Wap Push android.permission.RECEIVE_WAP_PUSH,接收WAP PUSH信息录⾳android.permission.RECORD_AUDIO,录制声⾳通过⼿机或⽿机的麦克排序系统任务android.permission.REORDER_TASKS,重新排序系统Z轴运⾏中的任务结束系统任务android.permission.RESTART_PACKAGES,结束任务通过restartPackage(String)⽅法,该⽅式将在外来放弃发送短信android.permission.SEND_SMS,发送短信android.permission.SET_ACTIVITY_WATCHER,设置Activity观察器⼀般⽤于monkey测试设置Activity观察其设置闹铃提醒com.android.alarm.permission.SET_ALARM,设置闹铃提醒设置总是退出android.permission.SET_ALWAYS_FINISH,设置程序在后台是否总是退出设置动画缩放android.permission.SET_ANIMATION_SCALE,设置全局动画缩放设置调试程序android.permission.SET_DEBUG_APP,设置调试程序,⼀般⽤于开发设置屏幕⽅向android.permission.SET_ORIENTATION,设置屏幕⽅向为横屏或标准⽅式显⽰,不⽤于普通应⽤设置应⽤参数android.permission.SET_PREFERRED_APPLICATIONS,设置应⽤的参数,已不再⼯作具体查看addPackageToPreferred(String) 介绍设置进程限制android.permission.SET_PROCESS_LIMIT,允许程序设置最⼤的进程数量的限制设置系统时间android.permission.SET_TIME,设置系统时间设置系统时区android.permission.SET_TIME_ZONE,设置系统时区设置桌⾯壁纸android.permission.SET_WALLPAPER,设置桌⾯壁纸设置壁纸建议android.permission.SET_WALLPAPER_HINTS,设置壁纸建议android.permission.SIGNAL_PERSISTENT_PROCESSES,发送⼀个永久的进程信号发送永久进程信号状态栏控制android.permission.STATUS_BAR,允许程序打开、关闭、禁⽤状态栏访问订阅内容android.permission.SUBSCRIBED_FEEDS_READ,访问订阅信息的数据库写⼊订阅内容android.permission.SUBSCRIBED_FEEDS_WRITE,写⼊或修改订阅内容的数据库显⽰系统窗⼝android.permission.SYSTEM_ALERT_WINDOW,显⽰系统窗⼝更新设备状态android.permission.UPDATE_DEVICE_STATS,更新设备状态使⽤证书E_CREDENTIALS,允许程序请求验证从AccountManager使⽤SIP视频E_SIP,允许程序使⽤SIP视频服务使⽤振动android.permission.VIBRATE,允许振动唤醒锁定android.permission.WAKE_LOCK,允许程序在⼿机屏幕关闭后后台进程仍然运⾏android.permission.WRITE_APN_SETTINGS,写⼊⽹络GPRS接⼊点设置写⼊GPRS接⼊点设置写⼊⽇程提醒android.permission.WRITE_CALENDAR,写⼊⽇程,但不可读取写⼊联系⼈android.permission.WRITE_CONTACTS,写⼊联系⼈,但不可读取写⼊外部存储android.permission.WRITE_EXTERNAL_STORAGE,允许程序写⼊外部存储,如SD卡上写⽂件android.permission.WRITE_GSERVICES,允许程序写⼊Google Map服务数据写⼊Google地图数据com.android.browser.permission.WRITE_HISTORY_BOOKMARKS,写⼊浏览器历史记录或收藏夹,但不可读取写⼊收藏夹和历史记录android.permission.WRITE_SECURE_SETTINGS,允许程序读写系统安全敏感的设置项读写系统敏感设置读写系统设置android.permission.WRITE_SETTINGS,允许读写系统设置项编写短信android.permission.WRITE_SMS,允许编写短信android.permission.WRITE_SYNC_SETTINGS,写⼊Google在线同步设置写⼊在线同步设置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在本系列共两篇的教程中,将指导开发者如何利用Android的搜索框架进行搜索功能的开发。

在第一篇就是本文中,将让开发者了解Android的搜索框架,在第二篇教程中,将展示关于搜索建议和全局搜索整合到app应用中去。

本地搜索VS 全局搜索我们先来看下在Android的搜索框架中,本地搜索和全局搜索两个概念和它们之间的区别。

本地搜索:指的是由app应用本身提供的搜索功能,这对任何的app应用都应该最好提供这样的功能,比如一个食谱的app应用应该能让用户在这个应用中根据关键字去进行搜索。

本地搜索是在某一app内进行的,不同的app应用之间不能进行互相的搜索。

全局搜索另一方面,全局搜索能让用户在主屏幕中通过快速搜索框根据关键字,在各app中展开相关的搜索,Android使用了多种数据源来为全局搜索提供帮助。

比如下图中,展示了在Android平板系统中,可以看到左边部分是用户输入的搜索内容,使用的是google的搜索,检索出来的结果中,甚至能包含用户机器上安装的app应用的标题,它们展示在右边。

用户对于全局搜索的体验是跟本地搜索的是完全不同的。

全局搜索的功能中,可以使用google进行搜索,搜索的范围包括安装到本地机器的app应用,通讯录等,甚至包括某些允许使用全局搜索的app的检索结果。

下图中,展示的是可以进行全局搜索的数据来源,可以看到包括了web,各app应用,音乐,消息和通讯录。

可以看到,一个好的app应用,应该尽可能在上图中出现,这样用户在搜索时,才会优先考虑对其进行检索,更方便用户的操作。

在本教程的第2篇中,将更详细指导用户如何去进行全局检索。

在APP应用中启用搜索在app应用中,至少要执行如下的三个步骤,才能让app应用能够进行检索。

如果要提供搜索建议,还需要执行第4步:1编写搜索配置的XML文件2编写搜索的activity类3在Android的manifest.xml文件中,对两面两个步骤的工作进行配置。

4如果要使用搜索建议,则需要增加一个contentprovider。

配置搜索的XML配置文件首先看下如何配置搜索的XML配置文件。

先命名配置文件名称为searchable.xml,保存在res/xml文件夹中。

然后需要设置搜索框的文本,并且应该增加一个hint的提示文本信息,如下代码所示:5<searchable6xmlns:android="/apk/res/android"7android:label="@string/search_label">8android:hint="@string/search_hint"9</searchable>关于搜索配置文件有很多的配置选项,建议参考Android的手册可以获得更多:/guide/topics/search/searchable-config.html。

增加搜索的Activity当用户进行搜索时,Android调用activity进行搜索,代码如下:10publicclass SampleSearchActivity extends ListActivity {11public void onCreate(Bundle savedInstanceState) {12super.onCreate(savedInstanceState);13handleIntent(getIntent());14}15public void onCreate(Bundle savedInstanceState) {16super.onCreate(savedInstanceState);17handleIntent(getIntent());18}19public void onNewIntent(Intent intent) {20setIntent(intent);21handleIntent(intent);22}23public void onListItemClick(ListView l,24View v, int position, long id) {25// 点每个搜索结果时的处理代码26}27private void handleIntent(Intent intent) {28if (Intent.ACTION_SEARCH.equals(intent.getAction())) {29String query =30intent.getStringExtra(SearchManager.QUERY);31doSearch(query);32}33}34private void doSearch(String queryStr) {35//执行真正的查询结果处理36}37}在上面的代码中,在handleIntent方法中,当按下搜索按钮,系统就会自动发送Intent,action 是Intent.ACTION_SEARCH,然后通过intent.getStringExtra(SearchManager.QUERY);获得要搜索的字符串。

其中为什么要包含onNewIntent()方法呢?主要是因为Android的back后退机制。

Android 会默认把每一个新的activity放到activity栈的顶部。

如果用户点了后退键,则会关闭栈顶部的activity。

尝试考虑一种情况,用户搜索一个内容并且系统列出了结果,如果用户发现结果不是他所要的,或者希望重新检索,则会重新点击搜索按键,这样将会产生一个新的搜索activity的实例,在activity栈中就会有两个搜索的activity,这是开发者并不期待的,所以,需要将这个搜索的activity声明为singleTop类型的activity,这样的话,无论用户按返回键还是尽心个多次的搜索,在acitivty栈中始终保持的是一个搜索activity的实例。

因为当activity被设置为singleTop的加载模式时,如果堆栈的顶部已经存在了该Activity,那么,它便不会重新创建,而是调用onNewIntent。

如果,该Activity存在,但不是在顶部,那么该Activity依然要重新创建。

mainifest配置文件接下来,需要对manifest配置文件进行配置,必须要对其中进行如下配置:搜索的activity.使用搜索的intentactivity启动模式searchable.xml中的元数据更多的定义搜索的元数据下面是典型的一个搜索的配置38<application39android:icon="@drawable/icon"40android:label="@string/app_name"41android:name=".YourApp" >42<meta-data43android:name="android.app.default_searchable"44android:value=".YourSearchActivity" />45<activity46android:label="@string/app_name"47android:launchMode="singleT op"48android:name=".YourSearchActivity" >49<intent-filter >50<action android:name="android.intent.action.SEARCH" />51</intent-filter>52<intent-filter >53<action android:name="android.intent.action.VIEW" />54</intent-filter>55<meta-data56android:name="android.app.searchable"57android:resource="@xml/searchable" />58</activity>59</application>在上面的典型配置中,要注意如下几点:1)由于当调用搜索activity时,Android调用的是android.intent.action.SEARCH作为搜索的intent,所以必须在intent-filter中包含android.intent.action.SEARCH。

2)在<meta-data>中,指出了searchable.xml的位置3)同样在<meta-data>中,通过:60<meta-data61android:name="android.app.default_searchable"62android:value=".YourSearchActivity" />指出了当执行搜索的字符串提交时,将调用哪一个activity去进行处理。

自定义搜索对于app应用来说,最好的还是能自定义搜索功能,并且能清晰告诉用户:你的app应用能支持搜索。

要注意的是,在Android的Honeycomb 和Ice Cream Sndewich版本中,已经不再有一个搜索的按钮了。

取而代之的是在action bar中显示搜索的按钮。

因此,一种很好的方式是通过在actionbar中同时加入搜索按钮,好像如下图,是在Android 2.2上运行的效果。

当用户开始搜索时,在activity中要打开一个搜索的对话框,这可以通过调用onSearchRequested()实现,这个是Android中Activity类的方法,并且会调用startsearch()方法,这个接下来会讨论。

在搜索中加入指定数据默认的搜索有时不能满足需要,可能要需要使用全局搜索,也可能需要一些额外的数据,在这个情况下,可以重写onSearchRequestd()方法并且自己调用startSearch方法,其中startSearch的方法中定义的参数如下:参数类型含义initialQuery string 搜索框中默认的字符串selectInitialQuery boolean 这个标志表明搜索框中的内容是否可以被选择,如果设置为true,则会覆盖initialQueryappSearchData Bundle 其他传递到搜索activity中的数据globalSearch boolean 决定是否使用全局搜索在默认调用startSearch()方法时,会默认使用如下的值:null, false, null, false,其含义为只使用本地搜索,不附加任何的其他的值。

相关文档
最新文档