<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</activity>
<activity-alias>
<intent-filter></intent-filter>
<meta-data/>
</activity-alias>
<service>
<intent-filter></intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter></intent-filter>
<meta-data/>
</receiver>
<provider>
<grant-uri-permission/>
<meta-data/>
</provider>
<uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>-------------------------安全控制和测试
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"-----------------------------------android命名空间,使得android中各种标准属性能够在文件中使用,提供了大部分元素中的数据
package="com.woody.test"----------------------------------------------------------------------java主程序包名,也是一个应用进程的默认名称
android:sharedUserId="string"-----------------------------------------------------------------表明数据权限,每个APK唯一的userId,如果设为一样则能在不同的APK之间共享数据
android:sharedUserLabel="string resource"-----------------------------------------------------共享的应用名,只有设置了sharedUserLabel之后才有意义
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >------------------------选择应用程序的安装位置
</manifest>
<application android:allowClearUserData=["true" | "false"]---------------------------------------------是否允许用户自行清除数据
android:allowTaskReparenting=["true" | "false"]--------------------------------------------是否允许Activity更换从属任务,比如从短信任务切换到浏览器任务
android:backupAgent="string"---------------------------------------------------------------android2.2新特性,设置改APP备份,属性值应该是一个完整的类名,入com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端)
android:debuggable=["true" | "false"]------------------------------------------------------表示该APP在手机上可被调试
android:description="string resource"------------------------------------------------------许可的详细信息
android:enabled=["true" | "false"]---------------------------------------------------------android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enable属性决定哪个组件是否可以被实例化,如果为false,则每个组件的enable属性都被覆盖,都不能实例化
android:hasCode=["true" | "false"]---------------------------------------------------------是否包含代码
android:icon="drawable resource"-----------------------------------------------------------应用程序的图标
android:killAfterRestore=["true" | "false"]------------------------------------------------是否复位需要重启
android:label="string resource"------------------------------------------------------------许可列表
android:manageSpaceActivity="string"-------------------------------------------------------让应用手动管理应用的数据目录
android:name="string"----------------------------------------------------------------------应用程序所实现的application子类的全名,当应用程序进程开始时,该类在所有应用程序组件之前被实例化
android:permission="string"----------------------------------------------------------------系统级别的权限设置,可以被组件的设置的权限覆盖
android:persistent=["true" | "false"]------------------------------------------------------是否保存默认运行状态
android:process="string"-------------------------------------------------------------------进程名,两个APP可公用一个进程,但是必须共享一个userId和赋予相同的证书
android:restoreAnyVersion=["true" | "false"]-----------------------------------------------是否准备尝试恢复所有的备份
android:taskAffinity="string"--------------------------------------------------------------拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是元素中设定的package名
android:theme="resource or theme" >--------------------------------------------------------应用程序级别的风格
</application>
<activity android:allowTaskReparenting=["true" | "false"]-----------------------------------------------
android:alwaysRetainTaskState=["true" | "false"]----------------------------------------------是否保留状态不变,比如切换回home,再从新打开,activity处于最后的状态。
android:clearTaskOnLaunch=["true" | "false"]--------------------------------------------------比如P是activity,Q是被P触发的activity,返回Home,重启P,是否显示Q
android:configChanges=["mcc", "mnc", "locale", "touchscreen", "keyboard", "keyboardHidden", "navigation", "orientation", "screenLayout", "fontScale", "uiMode"]-------------------------------------------设为true,当手机屏幕方向改变时不从onCreate()加载,而从onConfigurationChanged()加载
android:enabled=["true" | "false"]------------------------------------------------------------
android:excludeFromRecents=["true" | "false"]-------------------------------------------------是否可被显示在最近打开的activity列表里
android:exported=["true" | "false"]-----------------------------------------------------------
android:finishOnTaskLaunch=["true" | "false"]-------------------------------------------------
android:icon="drawable resource"--------------------------------------------------------------
android:label="string resource"---------------------------------------------------------------
android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance"]---------------standard:intent将发送给新的实例,会产生新的Activity;singleTop:intent发送新的实例,但是当请求的Activity在栈顶是不会构造新的实例;singleTask:只产生一个实例,当有intent是,系统会检查栈中是否有该Activity的实例,
如果有,则直接将intent发送给它;singleInstance:将一个Activity单独放在一个栈中,接收和展示所有的intent,到达共享的目的
android:multiprocess=["true" | "false"]-------------------------------------------------------是否允许多进程,默认为false
android:name="string"-------------------------------------------------------------------------
android:noHistory=["true" | "false"]----------------------------------------------------------
android:permission="string"-------------------------------------------------------------------
android:process="string"----------------------------------------------------------------------
android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nosensor"]------------------------------------------------------------------------------------------
android:stateNotNeeded=["true" | "false"]-----------------------------------------------------Activity被销毁或者成功重启时是否保存状态
android:taskAffinity="string"-----------------------------------------------------------------
android:theme="resource or theme"-------------------------------------------------------------
android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] >--------activity主窗口和软键盘的交互模式。stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或
依赖于主题的设置;stateUnchanged:当这个Activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示;stateHiddle:用户选择activity是,软键盘总是被隐藏;stateAlwaysHiddle:当该Activity获得焦点时,软键
盘也总是隐藏;stateVisible:软键盘同通常是可见的;stateAlwaysVisible:当用户选择Activity是,软键盘总是可见的;adjustUnspecofied:默认设置,通常由系统觉得隐藏或者显示;adjustResize:该Activity总是调整屏幕的大小,以适应
软键盘的空间;adjuestPan:当前窗口的内容将自动移动,以便当前的焦点不被键盘覆盖和用户总是能看见输入的内容
</activity>
<intent-filter android:icon="drawable resource"
android:label="string resource"
android:priority="integer" >
<action />
<category />
<data />
</intent-filter>
intent-filter:
android:priority(解释:有序广播主要是按照声明的优先级别,如A的级别高于B,那么,广播先传给A,再传给B。优先级别就是用设置priority属性来确定,范围是从-1000~1000,数越大优先级别越高)Intent filter内会设定的资料包括action,data与category三种。也就是说filter只会与intent里的这三种资料作对比动作
action:
action很简单,只有android:name这个属性。
常见的android:name值为android.intent.action.MAIN,表明此activity是作为应用程序的入口。
有关android:name的具体值:
String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。"android.intent.action.ADD_SHORTCUT"
String ALL_APPS_ACTION 动作:列举所有可用的应用。"android.intent.action.ALL_APPS"
String ALTERNATIVE_CATEGORY 类别:说明 activity 是用户正在浏览的数据的一个可选操作。输入:无。"android.intent.category.ALTERNATIVE"
String ANSWER_ACTION 动作:处理拨入的电话。 "android.intent.action.ANSWER"
String BATTERY_CHANGED_ACTION 广播:充电状态,或者电池的电量发生变化。 "android.intent.action.BATTERY_CHANGED"
String BOOT_COMPLETED_ACTION 广播:在系统启动后,这个动作被广播一次(只有一次)。 "android.intent.action.BOOT_COMPLETED"
String BROWSABLE_CATEGORY 类别:能够被浏览器安全使用的 activities 必须支持这个类别。 "android.intent.category.BROWSABLE"
String BUG_REPORT_ACTION 动作:显示 activity 报告错误。 "android.intent.action.BUG_REPORT"
String CALL_ACTION 动作:拨打电话,被呼叫的联系人在数据中指定。"android.intent.action.CALL"
String CALL_FORWARDING_STATE_CHANGED_ACTION 广播:语音电话的呼叫转移状态已经改变。"android.intent.action.CFF"
String CLEAR_CREDENTIALS_ACTION 动作:清除登陆凭证 (credential)。 "android.intent.action.CLEAR_CREDENTIALS"
String CONFIGURATION_CHANGED_ACTION 广播:设备的配置信息已经改变。
String DATA_ACTIVITY_STATE_CHANGED_ACTION 广播:电话的数据活动(data activity)状态(即收发数据的状态)已经改变。 "android.intent.action.DATA_ACTIVITY"
String DATA_CONNECTION_STATE_CHANGED_ACTION 广播:电话的数据连接状态已经改变。 "android.intent.action.DATA_STATE"
String DATE_CHANGED_ACTION 广播:日期被改变。 "android.intent.action.DATE_CHANGED"
String DEFAULT_ACTION 动作:和 VIEW_ACTION 相同,是在数据上执行的标准动作。 "android.intent.action.VIEW"
String DEFAULT_CATEGORY 类别:如果 activity 是对数据执行确省动作(点击, center press)的一个选项,需要设置这个类别。 "android.intent.category.DEFAULT"
String DELETE_ACTION 动作:从容器中删除给定的数据。 "android.intent.action.DELETE"
String DEVELOPMENT_PREFERENCE_CATEGORY 类别:说明 activity 是一个设置面板 (development preference panel). "android.intent.category.DEVELOPMENT_PREFERENCE"
String DIAL_ACTION 动作:拨打数据中指定的电话号码。 "android.intent.action.DIAL
String EDIT_ACTION 动作:为制定的数据显示可编辑界面。 "android.intent.action.EDIT"
String EMBED_CATEGORY 类别:能够在上级(父)activity 中运行。 "android.intent.category.EMBED"
String EMERGENCY_DIAL_ACTION 动作:拨打紧急电话号码。 "android.intent.action.EMERGENCY_DIAL"
int FORWARD_RESULT_LAUNCH 启动标记:如果这个标记被设置,而且被一个已经存在的 activity 用来启动新的 activity,已有 activity 的回复目标 (reply target) 会被转移给新的 activity。 16 0x00000010 String FOTA_CANCEL_ACTION 广播:取消所有被挂起的 (pending) 更新下载。 "android.server.checkin.FOTA_CANCEL"
String FOTA_INSTALL_ACTION 广播:更新已经被确认,马上就要开始安装。 "android.server.checkin.FOTA_INSTALL"
String FOTA_READY_ACTION 广播:更新已经被下载,可以开始安装。 "android.server.checkin.FOTA_READY"
String FOTA_RESTART_ACTION 广播:恢复已经停止的更新下载。 "android.server.checkin.FOTA_RESTART"
String FOTA_UPDATE_ACTION 广播:通过 OTA 下载并安装操作系统更新。 "android.server.checkin.FOTA_UPDATE"
String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 类别:作为代码框架下仪器的测试。"android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"
String GADGET_CATEGORY 类别:这个 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。 "android.intent.category.GADGET"
String GET_CONTENT_ACTION 动作:让用户选择数据并返回。 "android.intent.action.GET_CONTENT"
String HOME_CATEGORY 类别:主屏幕 (activity),设备启动后显示的第一个 activity。 "android.intent.category.HOME"
String INSERT_ACTION 动作:在容器中插入一个空项 (item)。 "android.intent.action.INSERT"
String INTENT_EXTRA 附加数据:和PICK_ACTIVITY_ACTION 一起使用时,说明用户选择的用来显示的 activity;和ADD_SHORTCUT_ACTION 一起使用的时候,描述要添加的快捷方式。 "android.intent.extra.INTENT"
String LABEL_EXTRA 附加数据:大写字母开头的字符标签,和 ADD_SHORTCUT_ACTION 一起使用。 "android.intent.extra.LABEL"
String LAUNCHER_CATEGORY 类别:Activity 应该被显示在顶级的launcher 中。 "android.intent.category.LAUNCHER"
String LOGIN_ACTION 动作:获取登录凭证。 "android.intent.action.LOGIN"
String MAIN_ACTION 动作:作为主入口点启动,不需要数据。 "android.intent.action.MAIN"
String MEDIABUTTON_ACTION 广播:用户按下了“Media Button”。 "android.intent.action.MEDIABUTTON"
String MEDIA_BAD_REMOVAL_ACTION 广播:扩展介质(扩展卡)已经从 SD 卡插槽拔出,但是挂载点 (mount point) 还没解除 (unmount)。 "android.intent.action.MEDIA_BAD_REMOVAL"
String MEDIA_EJECT_ACTION 广播:用户想要移除扩展介质(拔掉扩展卡)。 "android.intent.action.MEDIA_EJECT"
String MEDIA_MOUNTED_ACTION 广播:扩展介质被插入,而且已经被挂载。 "android.intent.action.MEDIA_MOUNTED"
String MEDIA_REMOVED_ACTION 广播:扩展介质被移除。 "android.intent.action.MEDIA_REMOVED"
String MEDIA_SCANNER_FINISHED_ACTION 广播:已经扫描完介质的一个目录。 "android.intent.action.MEDIA_SCANNER_FINISHED"
String MEDIA_SCANNER_STARTED_ACTION 广播:开始扫描介质的一个目录。 "android.intent.action.MEDIA_SCANNER_STARTED"
String MEDIA_SHARED_ACTION 广播:扩展介质的挂载被解除 (unmount),因为它已经作为 USB 大容量存储被共享。 "android.intent.action.MEDIA_SHARED"
String MEDIA_UNMOUNTED_ACTION 广播:扩展介质存在,但是还没有被挂载 (mount)。 "android.intent.action.MEDIA_UNMOUNTED"
String MESSAGE_WAITING_STATE_CHANGED_ACTION 广播:电话的消息等待(语音邮件)状态已经改变。"android.intent.action.MWI" int MULTIPLE_TASK_LAUNCH 启动标记:和 NEW_TASK_LAUNCH 联合使用,禁止将已有的任务改变为前景任务 (foreground)。 8 0x00000008
String NETWORK_TICKLE_RECEIVED_ACTION 广播:设备收到了新的网络 "tickle" 通知。 "android.intent.action.NETWORK_TICKLE_RECEIVED"
int NEW_TASK_LAUNCH 启动标记:设置以后,activity 将成为历史堆栈中的第一个新任务(栈顶)。 4 0x00000004 int NO_HISTORY_LAUNCH 启动标记:设置以后,新的 activity 不会被保存在历史堆栈中。 1 0x00000001 String PACKAGE_ADDED_ACTION 广播:设备上新安装了一个应用程序包。 "android.intent.action.PACKAGE_ADDED"
String PACKAGE_REMOVED_ACTION 广播:设备上删除了一个应用程序包。 "android.intent.action.PACKAGE_REMOVED"
String PHONE_STATE_CHANGED_ACTION 广播:电话状态已经改变。 "android.intent.action.PHONE_STATE"
String PICK_ACTION 动作:从数据中选择一个项目 (item),将被选中的项目返回。 "android.intent.action.PICK"
String PICK_ACTIVITY_ACTION 动作:选择一个activity,返回被选择的 activity 的类(名)。 "android.intent.action.PICK_ACTIVITY"
String PREFERENCE_CATEGORY 类别:activity是一个设置面板 (preference panel)。 "android.intent.category.PREFERENCE"
String PROVIDER_CHANGED_ACTION 广播:更新将要(真正)被安装。 "android.intent.action.PROVIDER_CHANGED"
String PROVISIONING_CHECK_ACTION 广播:要求 polling of provisioning service 下载最新的设置。 "android.intent.action.PROVISIONING_CHECK"
String RUN_ACTION 动作:运行数据(指定的应用),无论它(应用)是什么。 "android.intent.action.RUN" String SAMPLE_CODE_CATEGORY 类别:作为一个示例代码例子(不是普通用户体验的一部分)。 "android.intent.category.SAMPLE_CODE"
String SCREEN_OFF_ACTION 广播:屏幕被关闭。 "android.intent.action.SCREEN_OFF"
String SCREEN_ON_ACTION 广播:屏幕已经被打开。 "android.intent.action.SCREEN_ON" String SELECTED_ALTERNATIVE_CATEGORY 类别:对于被用户选中的数据,activity 是它的一个可选操作。 "android.intent.category.SELECTED_ALTERNATIVE"
String SENDTO_ACTION 动作:向 data 指定的接收者发送一个消息。 "android.intent.action.SENDTO"
String SERVICE_STATE_CHANGED_ACTION 广播:电话服务的状态已经改变。 "android.intent.action.SERVICE_STATE"
String SETTINGS_ACTION 动作:显示系统设置。输入:无。 "android.intent.action.SETTINGS"
String SIGNAL_STRENGTH_CHANGED_ACTION 广播:电话的信号强度已经改变。 "android.intent.action.SIG_STR"
int SINGLE_TOP_LAUNCH 启动标记:设置以后,如果 activity 已经启动,而且位于历史堆栈的顶端,将不再启动(不重新启动) activity。 2 0x00000002
String STATISTICS_REPORT_ACTION 广播:要求 receivers 报告自己的统计信息。 "android.intent.action.STATISTICS_REPORT"
String STATISTICS_STATE_CHANGED_ACTION 广播:统计信息服务的状态已经改变。 "android.intent.action.STATISTICS_STATE_CHANGED"
String SYNC_ACTION 动作:执行数据同步。 "android.intent.action.SYNC"
String TAB_CATEGORY 类别:这个 activity 应该在 TabActivity 中作为一个 tab 使用。 "android.intent.category.TAB"
String TEMPLATE_EXTRA 附加数据:新记录的初始化模板。 "android.intent.extra.TEMPLATE"
String TEST_CATEGORY 类别:作为测试目的使用,不是正常的用户体验的一部分。 "android.intent.category.TEST"
String TIMEZONE_CHANGED_ACTION 广播:时区已经改变。 "android.intent.action.TIMEZONE_CHANGED"
String TIME_CHANGED_ACTION 广播:时间已经改变(重新设置)。 "android.intent.action.TIME_SET"
String TIME_TICK_ACTION 广播:当前时间已经变化(正常的时间流逝)。 "android.intent.action.TIME_TICK"
String UMS_CONNECTED_ACTION 广播:设备进入 USB 大容量存储模式。 "android.intent.action.UMS_CONNECTED"
String UMS_DISCONNECTED_ACTION 广播:设备从 USB 大容量存储模式退出。 "android.intent.action.UMS_DISCONNECTED"
String UNIT_TEST_CATEGORY 类别:应该被用作单元测试(通过 test harness 运行)。 "android.intent.category.UNIT_TEST"
String VIEW_ACTION 动作:向用户显示数据。 "android.intent.action.VIEW"
String WALLPAPER_CATEGORY 类别:这个 activity 能过为设备设置墙纸。 "android.intent.category.WALLPAPER"
String WALLPAPER_CHANGED_ACTION 广播:系统的墙纸已经改变。 "android.intent.action.WALLPAPER_CHANGED"
String WALLPAPER_SETTINGS_ACTION 动作:显示选择墙纸的设置界面。输入:无。 "android.intent.action.WALLPAPER_SETTINGS"
String WEB_SEARCH_ACTION 动作:执行 web 搜索。 "android.intent.action.WEB_SEARCH"
String XMPP_CONNECTED_ACTION 广播:XMPP 连接已经被建立。 "android.intent.action.XMPP_CONNECTED"
String XMPP_DISCONNECTED_ACTION 广播:XMPP 连接已经被断开。
category属性
category也只有android:name属性。
常见的android:name值android.intent.category.LAUNCHER(决定应用程序是否显示在程序列表里)
有关android:name具体的值:
CATEGORY_ALTERNATIVE 设置这个activity是否可以被认为是用户正在浏览的数据的一个可选择的actionCATEGORY_APP_BROWSER和ACTION_MAIN一起使用,用来启动浏览器应用程序
CATEGORY_APP_CALCULATOR 和ACTION_MAIN一起使用,用来启动计算器应用程序
CATEGORY_APP_CALENDAR 和ACTION_MAIN一起使用,用来启动日历应用程序
CATEGORY_APP_CONTACTS 和ACTION_MAIN一起使用,用来启动联系人应用程序
CATEGORY_APP_EMAIL 和ACTION_MAIN一起使用,用来启动邮件应用程序
CATEGORY_APP_GALLERY 和ACTION_MAIN一起使用,用来启动图库应用程序
CATEGORY_APP_MAPS 和ACTION_MAIN一起使用,用来启动地图应用程序
CATEGORY_APP_MARKET 这个activity允许用户浏览和下载新的应用程序
CATEGORY_APP_MESSAGING 和ACTION_MAIN一起使用,用来启动短信应用程序
CATEGORY_APP_MUSIC 和ACTION_MAIN一起使用,用来启动音乐应用程序
CATEGORY_BROWSABLE 能够被浏览器安全调用的activity必须支持这个category
CATEGORY_DEFAULT 设置这个activity对于默认的action是否是一个可选的
CATEGORY_EMBED 可以运行在父activity容器内
CATEGORY_HOME 主activity,当应用程序启动时,它是第一个显示的activity
CATEGORY_LAUNCHER 应该在上层的启动列表里显示
CATEGORY_MONKEY 这个activity可能被monkey或者其他的自动测试工具执行
CATEGORY_OPENABLE 用来指示一个GET_CONTENT意图只希望ContentResolver.openInputStream能够打开URI
CATEGORY_PREFERENCE 这个activity是一个选项卡
CATEGORY_SAMPLE_CODE 作为一个简单的代码示例使用(一般情况下不使用)
CATEGORY_SELECTED_ALTERNATIVE 设置这个activity是否可以被认为是用户当前选择的数据的一个可选择的action
CATEGORY_TAB 想要在已有的TabActivity内部作为一个Tab使用
CATEGORY_TEST 供测试使用(一般情况不使用)
CATEGORY_UNIT_TEST 联合测试使用
data属性
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
【
1
】每个
<
data
>
元素指定一个
URI
和数据类型(
MIME
类型)。
它有四个属性
scheme
、
host
、
port
、
path
对应于
URI
的每个部分:
scheme:
//host:port/path
scheme
的值一般为
"http"
,
host
为包名,
port
为端口号,
path
为具体地址。如:
http:
//com.test.project:200/folder/etc
其中
host
和
port
合起来构成
URI
的凭据
(
authority
)
,如果
host
没有指定,则
port
也会被
忽 略要让authority有意义,scheme也必须要指定。要让path有意义,scheme+authority也必须要指定
【2】mimeType(指定数据类型),若mimeType为'Image',则会从content Provider的指定地址中获取image类型的数据。还有'video'啥的,若设置为video/mp4,则表示在指定地址中获取mp4格式的video文件
【3】而pathPattern和PathPrefix主要是为了格式化path所使用的
<meta-data>
<meta-data android:name="string"
android:resource="resource specification"
android:value="string"/>
这是该元素的基本结构
.
可以包含在
<
activity
>
<
activity
-
alias
>
<
service
>
<
receiver
>
四个元素中。
android:
name
解释:元数据项的名字,为了保证这个名字是唯一的,采用
java
风格的命名规范,
如
com
.
woody
.
project
.
fried
android:
resource
解释:资源的一个引用,指定给这个项的值是该资源的
id
。该
id
可以通过方法
Bundle
.
getInt
()
来从
meta
-
data
中找到。
android:
value
解释:指定给这一项的值。可以作为值来指定的数据类型并且组件用来找回那些值的
Bundle
方法:
[
getString
],[
getInt
],[
getFloat
],[
getString
],[
getBoolean
]
第三层<activity-alias>属性
<activity-alias android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:targetActivity="string">
<intent-filter/>
<meta-data/>
</activity-alias>
<activity-alias>是为activity创建快捷方式的,如下实例:
<activity android:name=".shortcut">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity-alias
android:name=".CreateShortcuts"
android:targetActivity=".shortcut"
android:label="@string/shortcut">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
其中
android
.
targetActivity
是指向对应快捷方式的
activity
,
如上述的
shortcut
(
此
Activity
名
)
android:
label
是指快捷方式的名称,而快捷方式的图标默认是给定的
application
图标
7、第三层<service>
【
1
】
service
与
activity
同级,与
activity
不同的是,它不能自己启动的,运行在后台的程序,如果我们退出应用时,
Service
进程并没有结束,它仍然在后台运行。比如听音乐,网络下载数据等,都是由
service
运行的
【2】service生命周期:Service只继承了onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法
【3】service与activity间的通信Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL),Activity与service间的通信主要用IBinder负责。
【4】<service android:enabled=["true" | "false"] android:exported[="true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string"></service>
8、第三层<receiver>
receiver的属性与service一样,这里就不显示了
BroadcastReceiver:用于发送广播,broadcast是在应用程序之间传输信息的一种机制,而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件Android BroadcastReceiver 简介
在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活动(Activity) - 用于表现功能
服务(Service) - 相当于后台运行的 Activity
广播(Broadcast) - 用于发送广播
广播接收器(BroadcastReceiver) - 用于接收广播
Intent - 用于连接以上各个组件,并在其间传递消息
BroadcastReceiver
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。下面将详细的阐述如何发送Broadcast和使用BroadcastReceiver过 滤接收的过程:
首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action、Category)装入一个Intent对象,然后通过调用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent对象以广播方式发送出去。
当Intent发送以后,所有已经注册的BroadcastReceiver会检查注册时的IntentFilter是否与发送的Intent相匹配,若 匹配则就会调用BroadcastReceiver的onReceive()方法。所以当我们定义一个BroadcastReceiver的时候,都需要 实现onReceive()方法。
注册BroadcastReceiver有两种方式:
一种方式是,静态的在AndroidManifest.xml中用标签生命注册,并在标签内用标签设置过滤器。
另一种方式是,动态的在代码中先定义并设置好一个 IntentFilter对象,然后在需要注册的地方调 Context.registerReceiver()方法,如果取消时就调用Context.unregisterReceiver()方法。如果用动 态方式注册的BroadcastReceiver的Context对象被销毁时,BroadcastReceiver也就自动取消注册了。
另外,若在使用sendBroadcast()的方法是指定了接收权限,则只有在AndroidManifest.xml中用标签声明了拥有此权限的BroascastReceiver才会有可能接收到发送来的Broadcast。
同样,若在注册BroadcastReceiver时指定了可接收的Broadcast的权限,则只有在包内的AndroidManifest.xml中 用标签声明了,拥有此权限的Context对象所发送的Broadcast才能被这个 BroadcastReceiver所接收。
动态注册:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(String);--为 BroadcastReceiver指定action,使之用于接收同action的广播 registerReceiver(BroadcastReceiver,intentFilter);
一般:在onStart中注册,onStop中取消unregisterReceiver
发送广播消息:extends Service
指定广播目标Action:Intent Intent = new Intent(action-String)
--指定了此action的receiver会接收此广播
需传递参数(可选) putExtra();
发送:sendBroadcast(Intent);
9、第三层<provider>属性
<provider android:authorities="list"
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" | "false"]
android:writePermission="string">
<grant-uri-permission/>
<meta-data/>
</provider>
contentProvider
(
数据存储
)
【
1
】
android:
authorities
:
标识这个
ContentProvider
,调用者可以根据这个标识来找到它
【
2
】
android:
grantUriPermission
:
对某个
URI
授予的权限
【
3
】
android:
initOrder
10、第三层<uses-library>
用户库,可自定义。所有
android
的包都可以引用
11、第一层<supports-screens>
<supports-screens android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:anyDensity=["true" | "false"] />
这是在
android1
.
6
以后的新特性,支持多屏幕机制各属性含义:这四个属性,是否支持大屏,是否支持中屏,是否支持小屏,是否支持多种不同密度
12、第二层<uses-configuration />与<uses-feature>性能都差不多
<uses-configuration android:reqFiveWayNav=["true" | "false"]
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
<uses-feature android:glEsVersion="integer"
android:name="string"
android:required=["true" | "false"] />
这两者都是在描述应用所需要的硬件和软件特性,以便防止应用在没有这些特性的设备上安装。
13、第二层<uses-sdk />
<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer"/>
描述应用所需的
api
level
,就是版本,目前是
android
2.2
=
8
,
android2
.
1
=
7
,
android1
.
6
=
4
,
android1
.
5
=
3
在此属性中可以指定支持的最小版本,目标版本以及最大版本
14、第二层<instrumentation />
<instrumentation android:functionalTest=["true" | "false"]
android:handleProfiling=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:targetPackage="string"/>
定义一些用于探测和分析应用性能等等相关的类,可以监控程序。在各个应用程序的组件之前
instrumentation
类被实例化android:functionalTest(解释:instrumentation类是否能运行一个功能测试,默认为false)
15、<permission>、<uses-permission>、<permission-tree />、<permission-group />区别
最常用的当属,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明,此与同级,具体权限列表请看此处
通常情况下我们不需要为自己的应用程序声明某个权限,除非你提供了供其他应用程序调用的代码或者数据。这个时候你才需要使用 这个标签。很显然这个标签可以让我们声明自己的权限。比如:
<permission android:name="com.teleca.project.MY_SECURITY" . . . />
```那么在activity中就可以声明该自定义权限了,如:
```java
<application . . .>
<activity android:name="XXX" . . . >
android:permission="com.teleca.project.MY_SECURITY"> </activity>
</application>
当然自己声明的permission也不能随意的使用,还是需要使用来声明你需要该权限
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: 冷风の傲
原文地址: http://my.eoe.cn/1087692/archive/5927.html