- Manifest.xml是Android应用程序(Android Application)开发的基础配置文件,处于项目工程的最底层,全名为AndroidManifest.xml
- 首先Manifest文件是一个xml文件,必须符合xml文件定义规范
- XML文件定义声明:<?xml version="" encoding="utf-8"?>
- 关键xml节点-->manifest
- 属性:xmlns:android="https://schemas.android.com/apk/res/android",值基本固定不变
- 属性:package="packageName",应用程序的包名,包名可以随便定义,不一定是存在的包的名称,但是为了在Activity、Receiver、Service指向的类能够简单化,通常包名定义为应用程序的主包名
- 属性:android:versionCode="" 是一个应用程序内部版本,这个版本是开发者使用的,以及发布应用程序使用的,但是外部用户是看不见的,市场通过这个字段来判断是否有更新
- 属性:android:versionName="" 是应用程序的外部版本,这个版本是给用户看的,一般在应用程序的关于中显示,实际与升级没有任何关系,但是为了保证同步,升级后versionName也相应增加
- 属性:android:installLocation="",包括三个值(auto,internalOnly,preferExternal),分别表示系统选择、只安装到内部存储中、优先安装到外部存储中(没有外部存储或者外部存储容量不足时才会转内部存储),通常使用auto,由系统判断,但是有些加载大量资源的应用,如游戏,离线地图等一般都安装在外部存储中,普通的应用优先安装在内部存储中
- 属性:android:sharedUserId="",Android的应用程序一般运行都在不同进程中的,不能直接进行数据资源共享,而通过两种方法能够实现应用之间的数据共享,一种是ContentProvider,这里不做介绍,另一种就是通过配置两个应用程序的sharedUserId相同来实现
- 属性:android:sharedUserLabel="",用户可读的字符串,没有什么实际作用,只有在具有sharedUserId的时候才有用
- 子节点:
- application
- activity
- receiver
- service
- provider
- meta-data
- uses-sdks
- uses-feature
- uses-configuration
- activity-alias
- permission
- uses-permission
- support-screen
- 在代码中获取manifest中某些属性:通过PackageInfo来获取,flag传递0,如果获取权限,使用PackageManager.GET_PERMISSIONS
PackageInfo packageInfo = getPackageManager().getPackageInfo("com.example.AndroidTest_01", PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
- 不同应用数据共享:sharedUserId配置相同,在一个应用中可以通过另一个应用的包名创建其全局上下文对象
Context context=createPackageContext("com.example.AndroidTest_01",Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
-
- 创建引用上下文对象需要知道其包名,并且配置flag为包含代码与忽视安全机制
- 通过该Context实例能够访问另一个应用中的任何开放资源
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.AndroidTest_01"
android:versionCode="1"
android:installLocation="preferExternal"
android:sharedUserId="com.tiza"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="21"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<application
android:label="@string/app_name"
android:allowClearUserData="true"
android:theme="@android:style/Theme.Holo.Light"
android:icon="@drawable/ic_launcher">
<activity
android:name="MyActivity"
android:launchMode="standard"
android:windowSoftInputMode="adjustResize"
android:icon="@drawable/back6"
android:label="主页">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".TAct"
android:icon="@drawable/logo"
android:parentActivityName=".MyActivity"
android:label="TAct">
</activity>
<service android:name=".MService"/>
</application>
</manifest>