A006-AndroidManifest.xml解析

来源:互联网 发布:云计算平台的特点包括 编辑:程序博客网 时间:2024/04/30 01:11

AndroidManifest.xml这个文件在Android中很重要,包含了应用程序的所有配置,包含SDK版本、应用权限、四大组件、扩展数据等等,它包含很多标签,每个标签都有具体的作用,标签下都会有不同的属性,也有通用的属性,不同的属性可能会影响我们应用程序的效果,所以我们详细了解具体标签的具体属性的使用场景是非常必要的,下面笔者会以做过的一个项目的完整配置来给大家系统介绍一下这个文件的使用方法。

AndroidManifest.xml配置例子

<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.infzm.o2o"    android:versionCode="1"    android:versionName="1.0.2" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="19" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.READ_LOGS" />    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />    <uses-permission android:name="android.permission.WAKE_LOCK" />    <uses-permission android:name="android.permission.VIBRATE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />    <uses-permission android:name="android.permission.CALL_PHONE"/>    <!-- 极光推送需要配置的权限 -->    <permission        android:name="com.infzm.o2o.permission.JPUSH_MESSAGE"        android:protectionLevel="signature" />    <!-- Required  一些系统要求的权限,如访问网络等 -->    <uses-permission android:name="com.infzm.o2o.permission.JPUSH_MESSAGE" />    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WAKE_LOCK" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />    <uses-permission android:name="android.permission.VIBRATE" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />    <!-- Optional for location -->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />    <!-- 极光推送权限配置end -->    <!-- 友盟升级权限配置start -->    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.READ_LOGS" />    <uses-permission android:name="android.permission.CALL_PHONE" />    <!-- Permission for Unit Test -->    <uses-permission android:name="android.permission.GET_TASKS" />    <!-- 友盟升级权限配置end -->    <application        android:name=".global.O2OApplication"        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.infzm.o2o.activity.SplashActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name="com.infzm.o2o.activity.MainActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:uiOptions="" >            <meta-data                android:name="android.support.UI_OPTIONS"                android:value="splitActionBarWhenNarrow" />        </activity>        <activity            android:name="com.infzm.o2o.activity.SettingsFeedback"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.BrowserActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.AboutUsActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.MoreSettingActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.SignUpActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.LoginAcivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.AddressActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:windowSoftInputMode="adjustPan|stateHidden" >        </activity>        <activity            android:name="com.infzm.o2o.activity.CameristInfoActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.ThemeInfolActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.SettingActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.ReserveActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:windowSoftInputMode="adjustPan|stateHidden" >        </activity>        <activity            android:name="com.infzm.o2o.activity.OrderReserveActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.OrderCheckActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.PictureActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:theme="@style/PicShowTheme" >        </activity>        <activity            android:name="com.infzm.o2o.activity.OrderDetailActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.ForgetpasswordActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.MyFavoritesActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.WelcomeGuideActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"             android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">        </activity>        <activity            android:name="com.infzm.o2o.activity.ClipImageViewActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.MeActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.OnlineSelectPic"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.ImagePagerActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >        </activity>        <activity            android:name="com.infzm.o2o.activity.CalendarViewActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>        <activity            android:name="com.infzm.o2o.activity.MessageActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>         <activity            android:name="com.infzm.o2o.activity.CameristCommentActivity"            android:label="@string/app_name"            android:screenOrientation="portrait" >        </activity>         <activity            android:name="com.infzm.o2o.activity.PayActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            android:windowSoftInputMode="adjustPan|stateVisible"            >        </activity>         <activity            android:name="com.infzm.o2o.activity.MessageDetailActivity"            android:label="@string/app_name"            android:screenOrientation="portrait"            >        </activity>        <!-- 极光推送配置 -->        <!-- Required SDK核心功能 -->        <activity            android:name="cn.jpush.android.ui.PushActivity"            android:configChanges="orientation|keyboardHidden"            android:theme="@android:style/Theme.Translucent.NoTitleBar" >            <intent-filter>                <action android:name="cn.jpush.android.ui.PushActivity" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="com.infzm.o2o" />            </intent-filter>        </activity>        <!-- Required  SDK核心功能 -->        <service            android:name="cn.jpush.android.service.DownloadService"            android:enabled="true"            android:exported="false" >        </service>        <!-- Required SDK 核心功能 -->        <service            android:name="cn.jpush.android.service.PushService"            android:enabled="true"            android:exported="false" >            <intent-filter>                <action android:name="cn.jpush.android.intent.REGISTER" />                <action android:name="cn.jpush.android.intent.REPORT" />                <action android:name="cn.jpush.android.intent.PushService" />                <action android:name="cn.jpush.android.intent.PUSH_TIME" />            </intent-filter>        </service>        <!-- Required SDK核心功能 -->        <receiver            android:name="cn.jpush.android.service.PushReceiver"            android:enabled="true" >            <intent-filter android:priority="1000" >                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />                <!-- Required  显示通知栏 -->                <category android:name="com.infzm.o2o" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.USER_PRESENT" />                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            </intent-filter>            <!-- Optional -->            <intent-filter>                <action android:name="android.intent.action.PACKAGE_ADDED" />                <action android:name="android.intent.action.PACKAGE_REMOVED" />                <data android:scheme="package" />            </intent-filter>        </receiver>        <!-- Required SDK核心功能 -->        <receiver android:name="cn.jpush.android.service.AlarmReceiver" />        <!-- User defined.  For test only  用户自定义的广播接收器 -->        <receiver            android:name="com.infzm.o2o.receiver.MyReceiver"            android:enabled="true" >            <intent-filter>                <action android:name="cn.jpush.android.intent.REGISTRATION" />                <!-- Required  用户注册SDK的intent -->                <action android:name="cn.jpush.android.intent.UNREGISTRATION" />                <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />                <!-- Required  用户接收SDK消息的intent -->                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />                <!-- Required  用户接收SDK通知栏信息的intent -->                <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />                <!-- Required  用户打开自定义通知栏的intent -->                <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />                <!-- Optional 用户接受Rich Push Javascript 回调函数的intent -->                <action android:name="cn.jpush.android.intent.CONNECTION" />                <!-- 接收网络变化 连接/断开 since 1.6.3 -->                <category android:name="com.infzm.o2o" />            </intent-filter>        </receiver>        <!-- Required  . Enable it you can get statistics data with channel -->        <meta-data            android:name="JPUSH_CHANNEL"            android:value="developer-default" />        <meta-data            android:name="JPUSH_APPKEY"            android:value="815b618e1263a55325d958f1" />        <!-- </>值来自开发者平台取得的AppKey -->        <!-- 极光推送配置end -->        <!-- 友盟更新sdk -->        <!-- Update Activitys Start -->        <activity            android:name="com.umeng.update.UpdateDialogActivity"            android:theme="@android:style/Theme.Translucent.NoTitleBar" >        </activity>        <!-- Update Activitys End -->        <!-- Caution! Do not change this app key. It is only for demo usage. -->        <meta-data            android:name="UMENG_APPKEY"            android:value="552c9094fd98c5ee45000866" >        </meta-data>        <meta-data            android:name="UMENG_CHANNEL"            android:value="Umeng" >        </meta-data>        <service            android:name="com.umeng.update.net.DownloadingService"            android:process=":DownloadingService" >        </service>        <!-- 友盟更新end -->        <!-- 友盟分享配置start -->        <!-- ###################注册SDK使用的Activity###################### -->        <!-- 分享编辑页 -->        <activity            android:name="com.umeng.socialize.view.ShareActivity"            android:configChanges="orientation|keyboard"            android:launchMode="singleTask"            android:noHistory="true"            android:theme="@style/Theme.UMDialog"            android:windowSoftInputMode="stateVisible|adjustResize" >        </activity>        <!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->        <activity            android:name="com.tencent.tauth.AuthActivity"            android:launchMode="singleTask"            android:noHistory="true" >            <intent-filter>                <action android:name="android.intent.action.VIEW" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="android.intent.category.BROWSABLE" />                <!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID -->                <data android:scheme="tencent100424468" />            </intent-filter>        </activity>        <activity            android:name="com.tencent.connect.common.AssistActivity"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Translucent.NoTitleBar" >        </activity>        <activity            android:name=".wxapi.WXEntryActivity"            android:configChanges="keyboardHidden|orientation|screenSize"            android:exported="true"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Translucent.NoTitleBar" />        <!-- 友盟分享配置end -->    </application></manifest>

看到上面这么多配置,初学者可能会疯掉,大呼:“这什么鬼啊?看不懂,看不懂?大家先不要怕,其实它就只是个xml文件,先了解一下xml文件的结构,我们知道一个xml文件都会有

  • xml标准文件头
  • 根元素
  • 子元素

我们每次创建项目会默认为我们创建这个文件,刚开始是这样的

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.devilwwj.pulltorefreshlistview" >    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

后面随着我们开发才不断往这个文件添加必须的配置。

<manifest>

首先,我们的根标签就是 manifest,有开始标签就有结束标签,所以每个标签都是成对出现的。
在我们的根标签中,需要指定package,应用的包名,具有唯一性。还需要指定应用当前的版本号versionCode和版本名称versionName;我们可以看到关于Android的属性都会有android:这样的前缀,这个是标准写法,我们每次敲完前缀之后可以通过代码提示功能来查看可以添加的属性,如下图:
标签属性

<uses-sdk>

uses-sdk是为了程序兼容而存在的,它是如何做兼容的呢?也许从三个子项的名字上就可以猜测出来。

minSdkVersion:若手机或平板的API level低于apk的minSdkVersion,系统不能安装这个应用。

targetSdkVersion:API level在minSdkVersion和targetSdkVersion之间的版本可以直接执行程序(不需要打开任何兼容项)。若手机或平板的API level大于程序的targetSdkVersion,Android运行环境就需要模拟之前版本API的行为,这个称之为兼容。程序开发者如何确定这个值呢?自然是在对应平台上测试,具体的过程是:递增targetSdkVersion,每递增一次测试一次。

maxSdkVersion:若手机或平板的API level 大于maxSdkVersion,程序不能安装或使用。google文档说不推荐这个子项,因为Android 2.0.1后不检查这一项了,只有google play还会check这一项。

<uses-permission>

摘自:http://blog.csdn.net/dp1234/article/details/6239933

这个配置是标识该应用申请系统授权具体的权限。

值 说明 android.permission.ACCESS_CHECKIN_PROPERTIES 允许读写访问”properties”表在checkin数据库中,改值可以修改上传 android.permission.ACCESS_COARSE_LOCATION 允许一个程序访问CellID或WiFi来获取粗略的位置 android.permission.ACCESS_FINE_LOCATION 允许一个程序访问精良位置(如GPS) android.permission.ACCESS_LOCATION_EXTRA_COMMANDS 允许应用程序访问额外的位置提供命令 android.permission.ACCESS_MOCK_LOCATION 允许程序创建模拟位置用于测试 android.permission.ACCESS_NETWORK_STATE 允许程序访问有关的网络信息 android.permission.ACCESS_SURFACE_FLINGER 允许程序使用SurfaceFlinger底层特性 android.permission.ACCESS_WIFI_STATE 允许程序访问Wi-Fi网络状态信息 android.permission.ACCOUNT_MANAGER 允许一个应用程序启动账户认证,该权限只能系统去设置 android.permission.AUTHENTICATE_ACCOUNTS 允许应用程序的验证账户扮演一个账户管理者 android.permission.BATTERY_STATS 允许程序更新手机电池统计信息 android.permission.BIND_APPWIDGET 允许应用告诉AppWidget哪个应用能够访问该AppWidget的数据 android.permission.BIND_DEVICE_ADMIN 必须通过关机接收者的请求,来确保只有系统能够与之交互 android.permission.BIND_INPUT_METHOD 必须通过InputMethodService的请求,来确保只有系统能够与之绑定 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 允许应用发出一个与intent相连的消息 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_STATE 允许程序改变Wi-Fi连接状态 android.permission.CLEAR_APP_CACHE 允许一个程序在设备中清除所有安装的程序的缓存 android.permission.CLEAR_APP_USER_DATA 允许一个程序清除用户数据 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 允许程序返回状态抓取信息从系统服务 android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST 作为一个工厂测试程序,运行在root用户 android.permission.FLASHLIGHT 允许访问闪光灯,其中HTC Dream不包含闪光灯 android.permission.FORCE_BACK 允许应用强制执行返回操作而不论是不是最终的activity android.permission.GET_ACCOUNTS 允许访问在Accounts Service中的一个帐户列表 android.permission.GET_PACKAGE_SIZE 允许一个程序获取任何package占用空间容量 android.permission.GET_TASKS 允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等 android.permission.GLOBAL_SEARCH 可以被内容提供者用来允许使用全程搜索他们的数据 android.permission.HARDWARE_TEST 允许访问硬件 android.permission.INJECT_EVENTS 允许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流 android.permission.INSTALL_PACKAGES 允许一个程序安装packages android.permission.INTERNAL_SYSTEM_WINDOW 允许打开窗口使用系统用户界面 android.permission.INTERNET 允许程序打开网络sockets android.permission.KILL_BACKGROUND_PROCESSES 允许应用去呼叫killBackgroundProcesses方法 android.permission.MANAGE_ACCOUNTS 允许程序去管理账户列表(在账户管理者中) android.permission.MANAGE_APP_TOKENS 允许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中 android.permission.MASTER_CLEAR 目前还没有明确的解释 android.permission.MODIFY_AUDIO_SETTINGS 允许程序修改全局音频设置 android.permission.MODIFY_PHONE_STATE 允许修改话机状态,如电源,人机接口等 android.permission.MODIFY_FORMAT_FILESYSTEMS 允许格式化可移除的存储仓库的文件系统 android.permission.MOUNT_UNMOUNT_FILESYSTEMS 允许挂载和反挂载文件系统可移动存储 android.permission.PERSISTENT_ACTIVITY 允许一个程序设置他的activities显示 android.permission.PROCESS_OUTGOING_CALLS 允许程序监视、修改有关播出电话 android.permission.READ_CALENDAR 允许程序读取用户日历数据 android.permission.READ_CONTACTS 允许程序读取用户联系人数据 android.permission.READ_FRAME_BUFFER 允许程序屏幕波或和更多常规的访问帧缓冲数据 android.permission.READ_HISTORY_BOOKMARKS 允许应用去读取(非写)用户浏览历史和书签 android.permission.READ_INPUT_STATE 允许程序返回当前按键状态 android.permission.READ_LOGS 允许程序读取底层系统日志文件 android.permission.READ_OWNER_DATA 允许程序读取所有者数据 android.permission.READ_PHONE_STATE 允许读取电话的状态 android.permission.READ_SMS 允许程序读取短信息(Allows an application to read SMS messages.) android.permission.READ_SYNC_SETTINGS 允许程序读取同步设置 android.permission.READ_SYNC_STATS 允许程序读取同步状态 android.permission.REBOOT 请求能够重新启动设备 android.permission.RECEIVE_BOOT_COMPLETED 允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动 android.permission.RECEIVE_MMS 允许一个程序监控将收到MMS彩信,记录或处理 android.permission.RECEIVE_SMS 允许程序监控一个将收到短信息,记录或处理 android.permission.RECEIVE_WAP_PUSH 允许程序监控将收到WAP PUSH信息 android.permission.RECORD_AUDIO 允许程序录制音频 android.permission.REORDER_TASKS 允许程序改变Z轴排列任务 android.permission.RESTART_PACKAGES 允许程序重新启动其他程序(此值已废弃使用) android.permission.SEND_SMS 允许程序发送SMS短信 android.permission.SET_ACTIVITY_WATCHER 允许程序监控或控制activities已经启动全局系统中 android.permission.SET_ALWAYS_FINISH 允许程序控制是否活动间接完成在处于后台时 android.permission.SET_ANIMATION_SCALE 修改全局信息比例 android.permission.SET_DEBUG_APP 配置一个程序用于调试 android.permission.SET_ORIENTATION 允许底层访问设置屏幕方向和实际旋转 android.permission.SET_PREFERRED_APPLICATIONS 允许一个程序修改列表参数PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法 android.permission.SET_PROCESS_LIMIT 允许设置最大的运行进程数量 android.permission.SET_TIME 允许应用设置系统时间 android.permission.SET_TIME_ZONE 允许程序设置系统时区时间 android.permission.SET_WALLPAPER 允许程序设置壁纸 android.permission.SET_WALLPAPER_HINTS 允许程序设置壁纸hits android.permission.SIGNAL_PERSISTENT_PROCESSES 允许程序请求发送信号到所有显示的进程中 android.permission.STATUS_BAR 允许程序打开、关闭或禁用状态栏及图标 android.permission.SUBSCRIBED_FEEDS_READ 允许一个程序访问订阅RSS Feed内容提供 android.permission.SUBSCRIBED_FEEDS_WRITE 系统暂时保留改设置, android.permission.SYSTEM_ALERT_WINDOW 允许一个程序打开窗口使用 TYPE_SYSTEM_ALERT,显示在其他所有程序的顶层 android.permission.UPDATE_DEVICE_STATS 允许应用更新设备资料信息 android.permission.USE_CREDENTIALS 允许应用从管理器得到授权请求 android.permission.VIBRATE 允许访问振动设备 android.permission.WAKE_LOCK 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 android.permission.WRITE_APN_SETTINGS 允许程序写入API设置 android.permission.WRITE_CALENDAR 允许一个程序写入但不读取用户日历数据 android.permission.WRITE_CONTACTS 允许程序写入但不读取用户联系人数据 android.permission.WRITE_EXTERNAL_STORAGE 允许应用写(非读)用户的外部存储器 android.permission.WRITE_GSERVICES 允许程序修改Google服务地图 android.permission.WRITE_HISTORY_BOOKMARKS 允许应用写(非读)用户的浏览器历史和书签 android.permission.WRITE_OWNER_DATA 允许一个程序写入但不读取所有者数据 android.permission.WRITE_SECURE_SETTINGS 允许应用写或读当前系统设置 android.permission.WRITE_SETTINGS 允许程序读取或写入系统设置 android.permission.WRITE_SMS 允许程序写短信 android.permission.WRITE_SYNC_SETTINGS 允许程序写入同步设置

application

摘自:http://blog.csdn.net/small_love/article/details/6534956

包含在:<manifest>元素下
可以包含:
- <activity>
- <activity-alias>
- <service>
- <receiver>
- <provider>
- <uses-library>

1、android:allowClearUserData
是否给以用户删除用户数据的权限,如果为true应用管理者就拥有清除数据的权限;false没有。默认为true。
2、android:allowTaskReparenting
应用定义的activities是否可以被从启动的任务转移到和他有相同并且将被带到前台的任务。true他们可以被转移,如果为false,
他们必须和启动他们的任务保持在一起。默认为false。
3、android:backupAgent
实现应用的备份代理的类名,BackupAgent的子类。这个属性的名称因该是全限定类名(如,”com.example.project.MyBackupAgent”)。
但是,如果名称的首字母被设置为点号,也可以为类名(如,”.MyBackupAgent”),他将被追加到在<manifest>元素中定义的包名后。
没有默认值。
4、android:debuggable
应用是否可以使用debug,甚至运行在用户模式下。true可以,false不能。默认为false。
5、android:description
用户可读的,比应用标签更长、更多的应用描述。此值必须是一个引用字符串。不像标签,他不能被设置为硬编码字符串。没有默认值。
6、android:enabled
Android系统是否可以实例化应用的组件。如果为true可以,如果为false不可以。如果为true时,每个组件的enabled属性决定了此组件
是否可用。如果为false,他重写了组件指定值,所有的组件将不还用。默认为true。
7、android:hasCode
应用是否包含代码。true表示包含,false表示不包含。当值为false时,在启动组件是系统不会试着加载应用的任何代码。默认为true。
8、android:icon
整个应用的图标,还是每个组件的默认图标。这个属性值必须被设置为drawable资源的引用。没有默认值。
9、android:killAfterRestore
在整型系统重置操作中,当他的设置被重置后,应用是否应该被终止。单个包的重置操作不会引起应用被关闭。整个系统的恢复操作仅代表
性的发生一次,当电话第一次被设置时。第三方应用将不会经常使用此属性。
默认值为true,意思是,当整个系统被恢复时,应用运行玩他的数据后,将会终止。
10、android:label
一个易读的应用标签,并且还是应用的每个组件的默认标签。这个标签应该被设置为引用字符串资源,当然他也可以像其他字符串一样在用户
接口中指定。但是为了方便,在应用开发时,可以被设置未定义字符串。
11、android:manageSpaceActivity
一个Activity子类的全限定名称,这个Activity可以被系统启动让用户管理此应用占有的存储空间。这个Activity也应该用<activity>元素声明。
12、android:name
为这个应用实现的Application子类的全限定名称。当应用启动时,这个类将在应用的其他组件之前被实例化。
这个子类是可选的;大多数应用不需要。在缺省时,Android使用基本Application类的实例。
13、android:permission
客户为了和应用交互必须设置的许可的名称。这个属性是一个便利的途径为应用的组件设置许可。他可以被组件的permission属性重写。
14、android:persistent
应用是否在所有时间下都保持运行。true是,false不是。默认为false。通常情况下应用不应该设置此标识。持久模式仅仅被几个系统应用指定。
15、android:process
为应用下的组件定一个运行进程名称。每个组件可以定义自己的进程名称通过设置自己的process属性。
在默认情况下,Android为应用创建一个进程,当应用的第一个组件需要运行时。所有的组件在同一个进程下运行。这个进程的名称和在<manifest>
元素设置的backage属性名相同。
通过设置这个属性在可以在其他应用中共享,你可以协调应用的组件在同一个进程中运行,但是只有两应用也共享用户ID和签订相同的证书。
如果这个属性的名称一个冒号(“:”)开始,一个新的私有的进程将被创建。如果一个进程的名称以小写字母开头,一个公共的进程将被创建。
一个公共的进程可以被其他应用共享,来减少资源的使用。
16、android:restoreAnyVersion
表明这个应用准备尝试恢复所有的备份数据集合,甚至如果备份数据是比当前安装的应用高的编号存储的。设置为true将允许备份管理者去尝试
恢复当版本不匹配,意思是数据冲突。要小心使用。默认为false。
17、android:taskAffinity
提供给应用下所有组件的类同名称,除了设置了自己的taskAffinity属性的组件。默认情况下所有的组件使用相同的affinity。Affinity的名称
和在<manifest>元素中设置的包名相同。
18、android:theme
为应用下的组件定义一个引用自样式资源的主题。个别的activities可以设置自己的主题,通过设置自己的theme属性。

<activity>

activity是Android四大组件之一,它的属性非常多,语法如下:
摘自:http://blog.sina.com.cn/s/blog_48d491300100zmg0.html

< activity android:allowTaskReparenting=["true" | "false"]    android:alwaysRetainTaskState=["true" | "false"]    android:clearTaskOnLaunch=["true" | "false"]    android:configChanges=["mcc", "mnc", "locale",        "touchscreen", "keyboard", "keyboardHidden",        "navigation", "screenLayout", "fontScale", "uiMode",        "orientation", "screenSize", "smallestScreenSize"]    android:enabled=["true" | "false"]    android:excludeFromRecents=["true" | "false"]    android:exported=["true" | "false"]    android:finishOnTaskLaunch=["true" | "false"]    android:hardwareAccelerated=["true" | "false"]    android:icon="drawable resource"    android:label="string resource"    android:launchMode=["multiple" | "singleTop" |        "singleTask" | "singleInstance"]    android:multiprocess=["true" | "false"]    android:name="string"    android:noHistory=["true" | "false"]     android:parentActivityName="string"     android:permission="string"    android:process="string"    android:screenOrientation=["unspecified" | "behind" |        "landscape" | "portrait" |        "reverseLandscape" | "reversePortrait" |        "sensorLandscape" | "sensorPortrait" |        "userLandscape" | "userPortrait" |        "sensor" | "fullSensor" | "nosensor" |        "user" | "fullUser" | "locked"]    android:stateNotNeeded=["true" | "false"]    android:taskAffinity="string"    android:theme="resource or theme"    android:uiOptions=["none" | "splitActionBarWhenNarrow"]    android:windowSoftInputMode=["stateUnspecified",        "stateUnchanged", "stateHidden",        "stateAlwaysHidden", "stateVisible",        "stateAlwaysVisible", "adjustUnspecified",        "adjustResize", "adjustPan"] >     . . .< /activity >

包含于:
<application>
可包含:
<intent-filter>
<meta-data>
说明:
声明一个 Activity( Activity 子类),实现应用程序的可视化用户界面。 所有 Activity 都必须在manifest文件中用 < activity > 声明。 任何未经声明的 Activity 系统都会视而不见,且不会运行。
属性:
android:allowTaskReparenting
当某个拥有相同 affinity 的任务即将返回前台时,Activity 是否能从启动时的任务转移至此任务中去 —“true”表示可以移动,“false”表示它必须留在启动时的任务中。
如果未设置本属性,则 < application > 元素中对应的 allowTaskReparenting 属性值将会应用于 Activity 。 默认值是“false”。
通常在启动时,Activity 与启动时的任务相关联,并在整个生命周期都位于此任务中。 利用本属性可以强行让 Activity 在当前任务不再显示时归属于另一个与其 affinity 相同的任务。 典型应用是让一个应用程序的 Activity 转移到另一个应用程序关联的主任务中去。
例如,如果某条 e-mail 信息包含了一个 Web 页的链接,点击此链接将启动一个 Activity 显示此 Web 页。 这个 Activity 是由浏览器程序定义的,但却作为 e-mail 任务的一部分被启动。 如果它重新归属于浏览器的任务,那么在下次浏览器进入前台时就会显示出来,并且会在 e-mail 任务再次回到前台时消失。
Activity 的 affinity 由 taskAffinity 属性定义。 任务的 affinity 由根 Activity 的 affinity 确定。 然而,根据规定,根 Activity 总是位于 affinity 同名的任务中。 因为以“singleTask”和“singleInstance” 模式启动的 Activity 只能位于任务的根部, 所以 Activity 的重新归属仅限于“standard”和“singleTop”启动模式。 (请参阅 launchMode 属性。)
android:alwaysRetainTaskState
系统是否一直维持 Activity 所属任务的状态 —“true”表示是,“false”表示允许系统在特定情况下重启任务。 默认值是“false”。 本属性只对任务的根 Activity 有效,其他 Activity 都忽略本属性。
通常,在用户从主屏幕(Home Screen)重新运行应用程序时,系统有时会清理任务(清除任务栈中根 Activity 以上的所有 Activity)。 执行此操作的典型情况是:用户有段时间(比如30分钟)没有访问该任务了。
然而,一旦本属性设为“true”,则不论用户位于何处,将总是返回任务的最后状态。 举例来说,这对浏览器就很有用,Web 浏览器这类应用需要保持很多状态(诸如多个已打开的页面),用户不期望这些状态马上消失。
android:clearTaskOnLaunch
每次从主屏幕重新执行程序时,是否将任务中除根 Activity 以外的所有 Activity 都清除 — “true”表示总是清除至根 Activity,“false”则不清除。 默认值是“false”。 本属性只对启动新任务的 Activity(根 Activity)有效,其他 Activity 都忽略本属性。
如果此值为“true”,则每当用户再次启动任务时都会进入根 Activity, 无论之前在此任务中做过什么操作,也无论上次是用 Back 还是 Home 键离开任务的。 如果此值为“false”,那么在某些情况下也许还会清理任务(请参阅 alwaysRetainTaskState属性),但并不是每次都会执行。
例如,假设用户从主屏幕启动了 Activity P,又从 P 转到 Activity Q。 接下来用户按下了 Home 键,然后再回到 Activity P 。 通常,用户将会看到 Activity Q,因为在 P 的任务里最后操作的就是 Q。 然而,如果 P 把本属性设为“true”,则用户按下 HOME 键时所有在它之上的 Activity(本例中是Q)都会被清除,任务将进入后台。 因此用户在下次返回该任务时就只会看到 P 了。
如果本属性和 allowTaskReparenting 都设为“true”,那么所有可改变任务归属的 Activity 都会转移到具有相同 affinity 的任务中去,其余的 Activity 都将如上所述被清除。
android:configChanges
列出 Activity 在变化时将会自行处理的配置参数。 默认情况下,如果运行时配置发生了变化, Activity 会被关闭并重启。 但在本属性中声明配置参数将会阻止 Activity 的重启,Activity 将会保持运行,且会调用其 onConfigurationChanged()方法。
注意: 请尽量避免使用本属性,这只能用作最后的手段。 关于如何正确处理配置变化引起的重启,详情请参阅 处理运行时配置的变化。

下面列出本属性可填入的值,多个值之间用“|”分隔 — 例如“locale|navigation|orientation”。

值 说明 “mcc” IMSI 移动国家代码(MCC)发生改变 — 检测到 SIM 卡并更新了 MCC。 “mnc” IMSI移动网络代码(MNC)发生改变——检测到 SIM 卡并更新了 MNC。 “locale” 地区发生改变——用户选择了新的语言(用于文本显示)。 “touchscreen” 触摸屏发生改变(通常不可能发生)。 “keyboard” 键盘发生改变 — 比如用户插入了外接键盘。 “keyboardHidden” 键盘功能发生改变 — 比如用户让硬键盘显示出来。 “navigation” 导航手段(轨迹球/D-Pad)发生了改变(通常不可能发生)。 “screenLayout” 屏幕布局发生了改变 — 可能是由于激活了其他显示屏。 “fontScale” 字体缩放倍数发生了改变 — 用户选择了新的全局字体大小。 “uiMode” 用户界面模式发生了改变 — 可能是由于用户把设备放进桌面/车用底座里,或者是变成了夜间模式。 请参阅 UiModeManager 。自API 级别 8 开始加入。 “orientation” 屏幕方向发生了改变 — 用户旋转了设备。 注意: 如果应用程序的目标版本是 API 级别 13 以上的话(由 minSdkVersion 和 targetSdkVersion 属性定义),且须同时声明“screenSize” 参数,因为设备在横向/竖向切换时 screenSize 参数也会发生改变。 “screenSize” 当前可用的屏幕尺寸发生改变。 这表示当前可用的屏幕大小发生了改变,与当前屏幕长宽比例有关,因此这会在用户改变了纵横方向时发生。 不过,如果用户程序的目标版本是 API 级别 12 以下时, Activity 将总是自行处理本参数的变化 (即使在 Android 3.2 以上版本中运行,本参数的变化也不会导致 Activity 的重启)。自 API 级别 13 开始加入。 “smallestScreenSize” 屏幕的物理尺寸发生了改变。 这种变化与屏幕的方向无关,因此只会在屏幕真实的物理大小发生变化时才会发生,比如切换到外接显示器。 本参数的变化和 smallestWidth 参数 的变化相呼应。 不过,如果应用程序的目标版本是 API 级别 12 以下, 则 Activity 将总是自行处理本参数的变化 (即使在 Android 3.2 以上版本中运行,本参数的变化也不会导致 Activity 的重启)。自 API 级别 13 开始加入。 “layoutDirection” Layout 的方向放生了改变。 例如,从左到右(LTR)变成了从右到左(RTL)。 自 API 级别 17 开始加入。

所有以上参数的改变都会影响到应用程序引用的资源值。 因此在调用 onConfigurationChanged() 时,通常需要重新读取一下所有的资源(包括 View Layout、drawable 等等),以便正确应对参数的变化。
android:enabled
Activity 能否被系统实例化 — “true”表示可以,“false”表示不允许。 默认值是“true”。
<application> 元素拥有自己的 enabled 属性,它适用于应用程序中所有的组件,包括 Activity。 系统要能够实例化 Activity , < application > 和< activity >的 enabled 属性都必须设为“true”(这也都是默认值)。 只要其中有一个是“false”, Activity 就不能被实例化。
android:excludeFromRecents
Activity 是否排除在用户最近访问应用程序的列表(“recent apps”)之外 。 也就是说,如果本 Activity 是新任务中的根 Activity,则本属性确定了该任务是否不出现在最近应用程序列表中。 如果要排除在列表外,就设为“true”。 如果要包含在列表中,则设为“false”。 默认值是“false”。
android:exported
Activity 是否能被其他应用程序的组件启动 —“true”表示可以,“false”表示不能。 如果设为“false”,那么 Activity 仅能被本应用程序或用户ID相同的应用程序的组件启动。
默认值取决于 Activity 是否包含 Intent 过滤器。 如果不存在过滤器,则意味着 Activity 只能通过指定准确的类名来启动。 这表示 Activity 仅限于应用程序内部使用(因为其他应用程序无法知道它的类名)。 在这种情况下,默认值是“false”。 另一方面,只要存在一个以上的过滤器,就意味着 Activity 愿意被外部启动,这时默认值就是“true”。
本属性并不是限制 Activity 向其他应用程序开放的唯一手段。 你还可以用权限来限制外部对象对 Activity 的启动(请参阅 permission 属性)。
android:finishOnTaskLaunch
每当用户再次启动任务时(在主屏幕上选择该任务),已存在的 Activity 实例是否应该关闭 — “true”表示需要关闭,“false”表示不要关闭。 默认值是“false”。
如果本属性和 allowTaskReparenting 都设为“true”,则本属性优先。 Activity 的 affinity 将被忽略。 Activity 将不会改变归属的任务,而是被销毁。
android:hardwareAccelerated
是否为本 Activity 开启硬件加速渲染功能 —“true”表示开启,“false”表示关闭。 默认值是“false”。
自 Android 3.0 开始,应用程序可以使用硬件加速的 OpenGL 渲染器来改善很多常用 2D 图形操作的性能。 当硬件加速渲染开启时,大部分 Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 内的操作都会被加速。 即使应用程序没有显式调用系统 OpenGL 库,这仍能使动画更加平滑、屏幕滚动也更加平顺、整体响应性能获得改善。 因为启用硬件加速功能需要更多的资源,应用程序将消耗更多的 RAM 。
请注意,并非所有的 OpenGL 2D 操作都会被加速。 如果开启了硬件加速渲染功能,请对应用程序进行测试,以确保渲染的正常使用。
android:icon
代表 Activity 的图标。 当需要在屏幕上用图标来表示 Activity 时,将会显示本图标。 例如,在桌面(launcher)窗口中显示用于启动任务的 Activity 图标。 图标常常伴随着一个文本标签(请参阅android:label属性)。
本属性必须设为对 drawable 资源的引用,资源内包含了图片的定义。 如果未设置本属性,则用作为全局设置的应用程序图标代替(请参阅 < application > 元素的 icon 属性)。
Activity 的图标 — 无论是用本属性还是用 < application > 元素的属性设置的 — 都将同时作为 Activity 所有 Intent 过滤器的缺省图标(请参阅 < intent-filter > 元素的 icon 属性。
android:label
供用户阅读的 Activity 的 Label。 当必须向用户标识 Activity 时,本 Label 将显示在屏幕上。 Label 常常是跟在 Activity 图标后面显示的。
如果未设置本属性,则用作为全局设置的应用程序 Label 代替(请参阅 <application> 元素的 label 属性)。
Activity 的 Label — 无论是用本属性还是用<application> 元素的属性设置的 — 都将作为 Activity 所有 Intent 过滤器的缺省 Label(请参阅 <intent-filter>元素的 label 属性)。
Label 应设为一个对字符串资源的引用,这样就能像其他用户界面内的字符串一样对其进行本地化。 不过,考虑到开发时的便利性,也可以直接将其设为字符串。
android:launchMode
指明 Activity 的启动模式。 当调用 Activity 来处理 Intent 时, Activity 的工作模式与四种标志(FLAG_ACTIVITY_*常量有关,这些常量在 Intent 中定义。它们是:
“standard”
“singleTop”
“singleTask”
“singleInstance”
缺省模式是“standard”。
如下表所述,这些模式归为两组: “standard”和“singleTop”模式的 Activity 为一组, “singleTask”和“singleInstance”模式的 Activity 为另一组。 用“standard”或“singleTop”模式启动的 Activity 可以被实例化多次。 这些实例可以属于任何一个任务,并且可以处于 Activity 栈的任何位置。 典型情况下,它们被任务通过调用 startActivity() 启动并置入其中(除非 Intent 对象包含 FLAG_ACTIVITY_NEW_TASK 标志,这种情况下会选取其他任务 — 请参阅 taskAffinity 属性)。
相反,“singleTask”和“singleInstance”模式的 Activity 只能启动一个任务。 它们总是位于 Activity 栈的根部。 不仅如此,设备同时只保留一个 Activity 实例 — 只启动一个任务。
“standard”和“singleTop”模式之间只有一点不同: 每次有“standard”模式 Activity 的 Intent 发生时, 都会新建一个 Activity 类的实例来响应该 Intent。 每个实例只负责处理一个 Intent 。 同理,singleTop 模式 Activity 的新实例也可以用于处理新发生的 Intent 。 不过,如果目标任务的栈顶已经存在该 Activity 的实例了,则此实例将收到这个新 Intent(在 onNewIntent() 里);而不会再创建新的实例了。 在其他情况下 — 比如目标任务中已存在“singleTop”模式的 Activity 但却不是在栈顶,或者在栈顶但却不是位于目标任务中 — 还是会创建新的实例并压入栈顶。
“singleTask”和“singleInstance”模式之间也只有一点差别: “singleTask”模式的 Activity 允许其他 Activity 加入它的任务。 它总是处于任务的根部,而其他 Activity (必须是“standard”和“singleTop”模式的 Activity )可以在它的任务中启动。 相反,“singleInstance”模式的 Activity 就不允许其他 Activity 加入它的任务,它是任务里唯一的 Activity 。 如果它启动了其他 Activity,也会被放入另一个任务中 — 类似 Intent 中设置了 FLAG_ACTIVITY_NEW_TASK 标志的情况。

使用场合 启动模式 多个实例? 注释 正常启动大多数 Activity “standard” 是 默认值。 系统总是在目标任务中创建 Activity 的新实例并把 Intent 传入。 “singleTop” 有条件的 如果目标任务的栈顶已经存在本 Activity 的实例,则系统通过调用 onNewIntent() 方法传入 Intent,而不再创建 Activity 的新实例。 特殊启动模式(不建议在正常情况下使用) “singleTask” 否 系统在一个新任务的根部创建 Activity 并传入 Intent 。 不过,如果本 Activity 的实例已经存在,系统将通过调用它的 onNewIntent() 方法来传入 Intent,而不再创建新的实例。 “singleInstance” 否 除了系统不在实例所属任务中启动其他 Activity 以外,与“singleTask””相同。 本 Activity 总是其任务中的唯一成员。

如上表所述,standard是默认模式,适用于大多数类型的 Activity 。 SingleTop 也是常用的启动模式,适用于多种 Activity 。 其他模式 — singleTask 和 singleInstance — 对于大多数应用程序而言并不适用, 因为它们的用户交互模式与其他多数应用大不相同,很可能会让用户感到陌生。
无论选择了哪种启动模式,都要确保对 Activity 的可用性进行测试,包括 Activity 启动过程、从其他 Activity 和任务中用 Back 键返回的过程。
关于启动模式及其与 Intent 标志位的关系,详情请参阅文档 任务和 Back 栈。
android:multiprocess
是否可以把 Activity 的实例放入启动它的组件所在的进程中。 — “true”表示可以,“false” 表示不可以。 默认值是“false”。
通常情况下, Activity 的新实例会放入应用程序指定的进程中,所以 Activity 的所有实例都运行在同一个进程中。 然而,如果本属性设为“true”, Activity 的进程就可以在多个进程中运行, 这就允许系统在任何需要用到该 Activity 的进程中(权限允许时)创建实例,尽管这也许永远都用不到。
android:name
实现 Activity 的类名, 也即 Activity 的子类。 本属性值应该是一个完全限定的类名(比如“com.example.project.ExtracurricularActivity”)。 不过作为简称,如果名称的首字符是句点(比如“.ExtracurricularActivity”),那么 < manifest > 元素中设置的包名会自动加到前面。
应用程序一经发布,就 不应该修改本名称 (除非设置了android:exported=”false”)。
没有默认值,必须指定本属性。
android:noHistory
当用户离开且屏幕上已看不到 Activity 时,是否要从栈中清除并结束(调用其 finish() 方法)它 — “true”表示需要结束,“false”表示不要结束。 默认值是“false”。
此值为“true”意味着 Activity 不会留下历史记录。 任务不会在栈中保留此 Activity ,因此用户也将无法返回它。
本属性自 API 级别 3 开始加入。
android:parentActivityName
定义本 Activity 的父 Activity。 本属性值必须与父 Activity 的类名一致,由 <activity> 元素的 android:name 属性对应。
当用户点击 ActionBar 的 Up 按钮时,系统将读取本属性以确定应该打开的 Activity 。 利用本属性,系统还可以通过 TaskStackBuilder 生成 Activity 的 back 栈。
为了支持 API 4~16 版本的系统,你也可以通过 定义了 “android.support.PARENT_ACTIVITY” 的 <meta-data> 元素来声明父 Activity:

< activity
android:name="com.example.app.ChildActivity"
android:label="@string/title_child_activity"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
< !-- Parent activity meta-data to support API level 4+ -- >
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app.MainActivity" / >

关于声明父 Activity 以支持 Up 导航的更多信息,请阅读 提供 Up 导航。
本属性自 API 级别 16 开始加入。
android:permission
要启动本 Activity 或者要用本 Activity 响应 Intent ,客户端必须拥有的权限名称。 如果 startActivity() 或 startActivityForResult() 的调用者没有被授权,那么它的 Intent 将不会传递给 Activity。
如果未设置本属性,则会把 < application > 元素的 permission 属性应用到本 Activity 上。 如果这两个属性都没有设置,那么 Activity 将不受权限保护。
关于权限的详细信息,请参阅介绍一文中的 权限 章节和另一篇文档 安全和权限。
android:process
将要运行 Activity 的进程名称。 通常,同一个应用程序的所有组件都会运行在应用启动时的默认进程中,你不需要用到本属性。 不过必要的时候,可以用本属性覆盖缺省的进程名称,你就可以让应用程序的多个组件分开运行于多个进程中。
如果赋予本属性的名称是以冒号(’:’)开头的,那么在必要的时候会新建一个属于应用程序的私有进程, Activity 将运行于该进程中。 如果进程名称以小写字母开头,则 Activity 将运行于一个以该名称命名的全局进程中,并赋予应有的权限。 这就允许不同应用程序的组件共享同一个进程,以|减少资源的占用。
< application > 元素的 process 属性可以为全体组件设置默认的进程名称。
android:screenOrientation
Activity 在设备上的显示方向。
属性值可以设为以下字符串之一:

值 说明 “unspecified” 默认值。由系统选择方向。选择的策略、进而根据特定的内容做出的选择,可能因不同的设备而各不相同。 “behind” 与 Activity 栈中下方相邻的 Activity 方向相同。 “landscape” 横向(宽度大于高度)。 “portrait” 纵向(高度大于宽度)。 “reverseLandscape” 与正常方向相反的横向。自 API 级别 9 开始加入。 “reversePortrait” 与正常方向相反的纵向。自 API 级别 9 开始加入。 “sensorLandscape” 横向,但基于设备传感器,既可能是正常横向也可能是反向横向。自 API 级别 9 开始加入。 “sensorPortrait” 纵向,但基于设备传感器,既可能是正常纵向也可能是反向纵向。自 API 级别 9 开始加入。 “userLandscape” 横向,但基于设备传感器和用户的传感器设置,既可能是正常横向也可能是反向横向。 如果用户锁定了基于传感器的旋转,则本属性与landscape作用一样,否则就与sensorLandscape一样。 自 API 级别 18 开始加入。 “userPortrait” 纵向,但基于设备传感器和用户的传感器设置,既可能是正常纵向也可能是反向纵向。 如果用户锁定了基于传感器的旋转,则本属性与portrait作用一样,否则就与sensorPortrait一样。 自 API 级别 18 开始加入。 “sensor” 由设备的方向传感器来确定方向。 显示的方向取决于用户如何放置设备,当用户旋转设备时就会发生改变。 不过,有些设备默认情况下无法旋转至全部四个方向。 要允许使用全部4个方向,请用“ “fullSensor””属性。 “fullSensor” 由设备的方向传感器确定为四个方向中的一个。 这类似于“sensor”,只是可以是四个方向中的任意一个,而不论设备正常情况如何 (比如,有些设备通常不会使用横向反向和纵向反向,但这个属性可以启用)。 自 API 级别 9 开始加入。 “nosensor” 不根据物理上的方向传感器来确定方向。 传感器将会被忽略,因此用户移动设备时显示方式不会旋转。 除此之外,系统使用与“unspecified”属性相同的原则来选择方向。 “user” 用户当前所用的方向。 “fullUser” 如果用户锁定了基于传感器的旋转,本属性与user的作用相同。 否则,与fullSensor的作用相同,允许使用四个方向。 自 API 级别 18 开始加入。 “locked” 锁定为当前方向,无论当前是什么方向。自 API 级别 18 开始加入。

注意: 一旦声明了横向或纵向值,则视为对 Activity 运行的方向有强制要求。 这时,此声明值将启用 Google Play 之类服务的过滤功能,于是应用程序就只能在支持所需方向的设备上使用。 比如,如果声明了“landscape”、“reverseLandscape”或者“sensorLandscape”, 则应用程序将只能在支持横向显示的设备上使用。 不过,你还可以用 < uses-feature > 元素来显式声明应用程序同时需要横向和纵向模式。 这样就会取消 Google Play(以及其他提供过滤的服务)的过滤行为, 即使设备仅支持特定的方向,系统也不会对是否安装应用程序进行控制了。

android:stateNotNeeded
未经保存状态, Activity 是否可被杀死并能够成功重启 —“true”表示可以不管之前的状态而被重启, “false” 表示需要保存之前的状态。 默认值是“false”。
通常,在为了腾出资源而临时关闭 Activity 之前,将会调用 onSaveInstanceState() 方法。该方法把当前 Activity 的状态存储到一个 Bundle 对象中,重新启动 Activity 时该 Bundle 对象将会被传给 onCreate() 。如果本属性设为“true”,则onSaveInstanceState() 可能就不会被调用,传入onCreate() 的将为 null 而非 Bundle — 就像第一次启动 Activity 一样。
本属性设为“true”将确保 Activity 能未经保存状态而被重启。 比如,显示主屏幕的 Activity 就利用本属性来保证由于某种原因崩溃时不会被清除。
android:taskAffinity
带有 affinity 的 Activity 所处的任务。 拥有相同 affinity 的 Activity 在概念上属于同一个任务(从用户的角度来看被视为同一个应用程序)。 任务的 affinity 取决于其根 Activity 的 affinity。
affinity 决定两件事情 — Activity 要重新归属于的任务(参阅 allowTaskReparenting 属性)和通过 FLAG_ACTIVITY_NEW_TASK 标志启动的 Activity 所处的任务。
默认情况下,同一个应用程序中的所有 Activity 都拥有相同的 affinity。 通过设置本属性,可以把 Activity 分为不同的组,甚至可以把不同应用程序的 Activity 放入同一个任务里。 要把 Activity 设置为不带 affinity ,也即不属于任何任务,只要将本属性设为空字符串即可。
如果未设置本属性,那么 Activity 将会继承应用程序的 affinity 设置(请参阅 < application > 元素的 taskAffinity 属性)。应用程序默认的 affinity 名称是由 < manifest > 元素设置的包名称。
android:theme
这是一个对样式资源的引用,该资源定义了 Activity 的整体主题(theme)。 Activity 将自动适用本属性设置的主题。(请参阅 setTheme() ),并可能会触发 Activity 的“启动”动画效果(为了让 Activity 看上去更美观协调)。
如果未设置本属性,Activity 将会继承作为全局设置的应用程序的主题 — 参见 元素的 theme 属性。如果应用程序也未设置该属性,则使用默认的系统主题。 详情请参阅样式和主题开发指南。
android:uiOptions
用于 Activity 用户界面的附加选项。
只能是以下值之一。

值 说明 “none” 没有附加选项。这是默认值。 “splitActionBarWhenNarrow” 当横向空间不足时(比如手机处于纵向模式时),在屏幕底部增加一个导航条,显示 ActionBar 中的 Action 项。Action Bar 将拆分为顶部和底部导航条,而不是只在屏幕顶部显示少量 Action 项。 这样就保证了合理的可用空间,不仅可容纳 Action Bar,还可以在顶部显示导航条和标题。 菜单项不会拆开在两个导航条显示,而一定是放在一起显示的。

关于 Action Bar 的更多信息,请参阅 Action Bar 开发指南。
本属性自 API 级别 14 开始引入。
android:windowSoftInputMode
Activity 主窗口如何与显示软键盘的窗口进行交互。 本属性影响两件事情:
软键盘的状态 — 当 Activity 获得用户焦点时,是隐藏还是显示。
Activity 主窗口的调整 — 是否缩小窗口以便为软键盘腾出空间,或者在软键盘覆盖部分窗口时移动显示内容,以便显示当前的输入焦点。
本设置只能是下表所列值之一,或者是一个“state…”值与一个“adjust…”值的组合。 如果在每个组中设置多于一个的值 — 比如多个“state…”值 — 则会导致不可预知的结果。 每个值之间用竖线(|)分隔。 例如:
< activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
以下值将覆盖主题中的相关设置
(“stateUnspecified”和“adjustUnspecified”除外)

值 说明 “stateUnspecified” 软键盘的状态(隐藏或显示)未指定。由系统选择合适的状态,或由主题中的设置来决定。这是软键盘的默认设置。 “stateUnchanged” 当 Activity 进入前台时,软键盘保持之前的状态不变,无论隐藏还是显示。 “stateHidden” 当用户选中本 Activity 时隐藏软键盘 — 也即用户确实是前进到本 Activity 时,而不是离开其他 Activity 回退过来时。 “stateAlwaysHidden” 当 Activity 的主窗口获得输入焦点时,总是隐藏软键盘。 “stateVisible” 一般情况下显示软键盘(当用户进入 Activity 主窗口时)。 “stateAlwaysVisible” 当用户选中本 Activity 时显示软键盘 — 也即用户确实是前进到本 Activity 时,而不是离开其他 Activity 回退过来时。 “adjustUnspecified” 未指定是否调整:Activity 主窗口是否要为软键盘留出空间而改变大小、还是在软键盘覆盖部分窗口时或移动显示内容以便显示当前输入焦点。 根据窗口中显示的内容是否具有可滚动布局的 View,系统将自动选择其中一种模式来处理。 如果是这类 View 则窗口将会缩小,因为滚动布局可以在较小的区域内显示完整的内容。这是主窗口的默认设置。 “adjustResize” Activity 的主窗口总是会改变大小,以便为软键盘腾出屏幕空间。 “adjustPan” Activity 的主窗口不会为软键盘留出空间而改变大小,而是自动移动窗口里的显示内容,使得当前输入焦点不会被键盘挡住,用户也一直能够看见输入的内容。 一般情况下更推荐使用 adjustResize 模式,因为用户可能需要与被遮挡内容交互,进而关闭软键盘。

本属性自 API 级别 3 开始引入
引入自:
noHistory 和 windowSoftInputMode 自 API 级别 3 开始引入,其余自 API 级别 1 开始引入。
参阅:
<application>
<activity-alias>

<intent-filter>

我们可以看到在activity、receiver、service都包含了<intent-filter>标签,它有什么作用呢?
Intent Filter其实就是 用来注册 Activity 、 Service 和 Broadcast Receiver 具有能在某种数据上执行一个动作的能力。
使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组
件、本地的或第三方的应用程序。

它至少要包含一个<action>,代表了一个动作
(1) 如果<intent-filter>中没有包含任何Action类型,那么无论什么Intent请求都无法和这条<intent-filter>匹配;
(2) 反之,如果Intent请求中没有设定Action类型,那么只要<intent-filter>中包含有Action类型,这个Intent请求就将顺利地通过<intent-filter>的行为测试。

可以包含 <category><data>标签,分别代表类别匹配和数据匹配。

详情参考:http://blog.csdn.net/wuwenxiang91322/article/details/7671593

更多

activity里面标签属性是最多的,其他标签大家可以自行查询SDK文档
http://www.android-doc.com/guide/topics/manifest/manifest-intro.html

光是一个AndroidManifest.xml文件涉及到内容就如此之多,初学者想要一下吃个胖子是不可能的事情,最好的办法是从最简单的学起,遇到不熟悉的标签属性的时候才去查询文档,笔者对里面的一些东西也不太熟悉,或者根本就没有使用过,只有当遇到一些问题的时候才会去查询,建议最好不要死记硬背,学到的时候才去查询,并且要结合具体场景,这样才能更好的掌握知识。

2 1
原创粉丝点击