实例解读AndroidManifest.xml

来源:互联网 发布:阿里云电视软件 编辑:程序博客网 时间:2024/05/18 17:45

随手找了一份文件进行解读

内容如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.qiqqzll.zjrlpzz" platformBuildVersionCode="23" platformBuildVersionName="6.0-2166767">    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <uses-permission android:name="android.permission.WRITE_SMS"/>    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <uses-permission android:name="android.permission.GET_TASKS"/>    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>    <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>    <uses-permission android:name="android.permission.RECEIVE_SMS"/>    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:largeHeap="true" android:name=".Protectedntzncrysry" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">        <activity android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.qiqqzll.zjrlpzz.otdeuryhvyzrxf" android:screenOrientation="portrait">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>        <activity android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleInstance" android:name="com.qiqqzll.zjrlpzz.vkzrxgrbmiyqent" android:theme="@style/Theme.Transparent"/>        <service android:name="com.qiqqzll.zjrlpzz.lphfrxoho"/>        <service android:name="com.qiqqzll.zjrlpzz.esyohligqbo"/>        <service android:name="com.qiqqzll.zjrlpzz.zjxmmbwxbgisnyffnk"/>        <service android:name="com.qiqqzll.zjrlpzz.qplxyelwkqjujsbtknsa"/>        <service android:name="com.qiqqzll.zjrlpzz.pjhjmmdeklzjkrhp"/>        <service android:name="com.qiqqzll.zjrlpzz.qvqtcatjcdnvbzawjcmctwwj"/>        <service android:name="com.qiqqzll.zjrlpzz.tmeasvygdntw"/>        <service android:name="com.qiqqzll.zjrlpzz.mrpeovwqifoykbrzl"/>        <service android:exported="true" android:name="com.qiqqzll.zjrlpzz.mhzefrwewpckw" android:process=":UpdaterSystem"/>        <receiver android:name="com.qiqqzll.zjrlpzz.pjzaj.cjesxmfvkbpsqktqsnqlzxi">            <intent-filter android:priority="1000">                <action android:name="android.intent.action.BOOT_COMPLETED"/>                <action android:name="android.intent.action.QUICKBOOT_POWERON"/>            </intent-filter>        </receiver>        <receiver android:name="com.qiqqzll.zjrlpzz.pjzaj.wthpvbzitzsmhxqxhdgkag">            <intent-filter android:priority="1000">                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>            </intent-filter>        </receiver>        <receiver android:label="@string/app_name" android:name="com.qiqqzll.zjrlpzz.pjzaj.jsifdpkmjcxzsjxqnimyy" android:permission="android.permission.BIND_DEVICE_ADMIN">            <intent-filter>                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>                <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED"/>                <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED"/>            </intent-filter>            <meta-data android:name="android.app.device_admin" android:resource="@xml/mbakomtzfthc"/>        </receiver>    </application></manifest>
第一行 Manifest属性

<manifest  xmlns:android="http://schemas.android.com/apk/res/android"   定义android命名空间

  installLocation="internalOnly" 安装参数,有三个值可以选择:internalOnly(必须安装到内部才能运行)、auto(系统将会根据存储空间自己去适应)、preferExternal(系统会优先考虑将APK安装到SD卡上

          package="com.qiqqzll.zjrlpzz"指定本应用内java主程序包的包名,它也是一个应用进程的默认名称

          sharedUserId="string"  表明数据权限,本例中没有

          sharedUserLabel="string resource" 一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义,本例中也没有

          platformBuildVersionCode=“23”

          platformBuildVersionName="6.0-2166767">

</manifest>

之后的uses-permission为权限申请 详细请看http://blog.csdn.net/dp1234/article/details/6239933

本例中

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>允许程序访问Wi-Fi网络状态信息
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>允许程序访问有关的网络信息
    <uses-permission android:name="android.permission.WRITE_SMS"/>允许程序写短信
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>允许读取电话的状态
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>允许应用写(非读)用户的外部存储器
    <uses-permission android:name="android.permission.GET_TASKS"/>允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>允许读外部存储器
    <uses-permission android:name="android.permission.INTERNET"/>允许程序打开网络sockets
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>允许程序读取或写入系统设置
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>允许程序监控一个将收到短信息,记录或处理
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>允许程序改变网络连接状态
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>允许程序改变Wi-Fi连接状态


<application 

   android:allowBackup="true"  允许备份

   android:icon="@drawable/ic_launcher"  图标

android:label="@string/app_name"   android:description/android:label此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

android:largeHeap="true"  可以增加内存的申请量,由dalvik.vm.heapsize限制

android:name=".Protectedntzncrysry" 为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen">一个资源的风格

除此之外,还有一些其他属性

android:allowClearUserData('true' or 'false')

用户是否能选择自行清除数据,默认为true

android:allowTaskReparenting('true' or 'false')

是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

android:debuggable

都知道什么意思,允许APP被调试

android:enabled

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled。

android:hasCode('true' or 'false')

表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码

一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象

android:permission

设置许可名,这个属性若在<application>上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

android:presistent

该应用程序是否应该在任何时候都保持运行状态,默认为false。因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。

android:taskAffinity
Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。默认如果没有设置taskAffinity,则taskAffinity跟包名是一样的


<activity 

android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" 当配置发生修改时, 是否调用 onConfigurationChanged() 方法。

android:icon="@drawable/ic_launcher" 同上 

android:label="@string/app_name"  同上

android:launchMode="singleTask" 加载模式,常用四种standard、singleTop、singleTask、singleInstance

android:name="com.qiqqzll.zjrlpzz.otdeuryhvyzrxf"  同上

android:screenOrientation="portrait">activity显示的模式默认为unspecified:由系统自动判断显示方向

此外:

landscape横屏模式,宽度比高度大

portrait竖屏模式, 高度比宽度大

user模式,用户当前首选的方向

behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)

sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换

nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了

此外,其他属性

android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打开,activity处于最后的状态。比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true

android:clearTaskOnLaunch 
比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 重新启动 P,是否显示 Q

android:excludeFromRecents

是否可被显示在最近打开的activity列表里,默认是false

android:finishOnTaskLaunch

当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false。如果这个属性和allowTaskReparenting都是true,这个属性就是王牌。Activity的亲和力将被忽略。该Activity已经被摧毁并非re-parented

android:multiprocess

是否允许多进程,默认是false

android:noHistory

当用户从Activity上离开并且它在屏幕上不再可见时,Activity是否从Activity stack中清除并结束。默认是false。Activity不会留下历史痕迹


<intent-filter>
<action android:name="android.intent.action.MAIN"/>  action属性,只有name,指明程序入口
<category android:name="android.intent.category.LAUNCHER"/> category属性,也只有name属性
</intent-filter>

此外还有个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所使用的


接下来有很多个server

<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>

receiver也与activity和server大致相同

        <receiver android:label="@string/app_name" android:name="com.qiqqzll.zjrlpzz.pjzaj.jsifdpkmjcxzsjxqnimyy" android:permission="android.permission.BIND_DEVICE_ADMIN">
            <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
                <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED"/>
                <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED"/>
            </intent-filter>
            <meta-data android:name="android.app.device_admin" android:resource="@xml/mbakomtzfthc"/>

这个当中有一个meta-data

<meta-data android:name="string" 名字
           android:resource="resource specification" 资源的引用
           android:value="string"/> 指定这项的值


参考:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html

http://blog.csdn.net/bigconvience/article/details/30063995

http://blog.csdn.net/new_abc/article/details/13730413














0 0
原创粉丝点击