AndroidManifest.xml

<?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也必须要指定

2mimeType(指定数据类型),若mimeType为'Image',则会从content Provider的指定地址中获取image类型的数据。还有'video'啥的,若设置为video/mp4,则表示在指定地址中获取mp4格式的video文件

3】而pathPatternPathPrefix主要是为了格式化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 运行的

2service生命周期:Service只继承了onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法

3serviceactivity间的通信Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL)Activityservice间的通信主要用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


























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值