AndroidManifest.xml文件综合详解
一,重要性AndroidManifest.xml是Android
二,主要<manifest>??//根节点,描述了package中所有的内容
? ? <uses-permission /> //请求你的package正常运作所需赋予的安全许可。一个manifest能包含零个或更多此元素
? ? <permission />??//声明了安全许可来限制哪些程序能使用你的package中的组件和功能。一个manifest能包含零个或更多此元素
? ? <permission-tree />??
? ? <permission-group />
? ? <instrumentation />??//声明了用来测试此package或其他package指令组件的代码。一个manifest能包含零个或更多此元素
? ? <uses-此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个activity(或者操作系统)要执行一个操作,例如:打开网页或联系簿时,它创建出一个intent的对象。它能承载一些信息描述了你想做什么,你想处理什么数据,数据的类型,和一些其他信息。Android比较了intent对象中和每个application所暴露的intent-filter中的信息,来找到最合适的activity来处理调用者所指定的数据和操作。关于intent的更多信息请访问Intent参考页面。
application属性介绍:
有关AndroidManifest.xml文件的application分支我们有必要了解一些常见的属性,这里可以看到一些我们实用的选项,比如允许? ?? ?? ?? ? android:allowTaskReparenting=["true" | "false"]
? ?? ?? ?? ? android:debuggable=["true" | "false"]
? ?? ?? ?? ? android:description="string resource"
? ?? ?? ?? ???android:enabled=["true" | "false"]
? ?? ?? ?? ? android:hasCode=["true" | "false"]
? ?? ?? ?? ? android:icon="drawable resource"
? ?? ?? ?? ???android:label="string resource"
? ?? ?? ?? ? android:manageSpaceActivity="string"
? ?? ?? ?? ???android:name="string"
? ?? ?? ?? ???android:permission="string"
? ?? ?? ?? ???android:persistent=["true" | "false"]
? ?? ?? ?? ???android:process="string"
? ?? ?? ?? ???android:taskAffinity="string"
? ?? ?? ?? ???android:theme="resource or theme" >
? ???. . .
</application>
另外:Activity的属性常用的可能为android:name和android:label两个,但我们需要了解所有的属性以帮助android:alwaysRetainTaskState=["true" | "false"] android:clearTaskOnLaunch=["true"" | "false"] android:configChanges=[one or more of: "mcc" "mnc" "locale" "touchscreen" "keyboard" "keyboardHidden" "navigation" "orientation" "fontScale"] android:enabled=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["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:permission="string" android:process="string" android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nonsensor"] android:stateNotNeeded=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" android:windowSoftInputMode=[one or more of: "stateUnspecified" "stateUnchanged" "stateHidden" "stateAlwaysHidden" "stateVisible" "stateAlwaysVisible" "adjustUnspecified" "adjustResize" "adjustPan"]
从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" >
</provider>
而对于服务相关定义如下:
<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>
最后是Broadcast使用的Receiver定义,一般配合和隐式处理。
<receiver 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" >
</receiver>
总之,AndroidManifest.xml文件虽然看起来复杂,但是,只要我们理清中里面各元素的作用,那么一切就变得简单了。
转自:http://www.eoeandroid.com/viewthread.php?tid=29129