侧边栏壁纸
  • 累计撰写 416 篇文章
  • 累计创建 65 个标签
  • 累计收到 147 条评论

目 录CONTENT

文章目录

AndroidManifest.xml文件之中 标签属性详解

Z同学
2020-08-28 / 0 评论 / 0 点赞 / 1,635 阅读 / 5,894 字
温馨提示:
本文最后更新于 2021-11-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

android随着系统的版本不断迭代升级,AndroidManifest.xml文件之中的控制属性也越来越多了。

所以打算写一篇关于相关控制属性的文章,记录一下.

若有不足和错误,请留言指出,谢谢。

1.< application >标签

android:directBootAware="true"

作用:设备加密感知配置,配置后应用在Direct Boot Mode模式中会收到开机广播 Intent.ACTION_LOCKED_BOOT_COMPLETED。用户解锁后会收到另一条开机广播: Intent.ACTION_BOOT_COMPLETED 。
注意:
默认值:false

android:hardwareAccelerated="true"

作用:开启设备硬件加速模式。 该标签,可以设置在Activity标签里,只开启当前界面时进行硬件加速,如果放在application下,那么整个系统都将生效。
注意:
默认值:false

android:largeHeap="true"

作用:申请更大的内存分配。 默认情况下每个app的内存分配是采用标准固定分配,如果进行largeHeap进行设置之后,将会采用最大分配区间进行分配内存。给与app更大的可用内存空间。
注意:内存泄漏和溢出造成的错误,不是采用简单的扩大可分配内存就能解决的,大家还是需要注意内存的使用和释放才对。
默认值:false

 android:allowBackup="false"

作用:设置应用是否进行备份。 如果设置为false,那么利用安卓系统的备份app 操作可能无法执行。
类似的还有,很多程序之中的app迁移,也是利用备份的原理进行迁移的。设置之后也会影响app的迁移功能。
注意:
默认值:true

 android:supportsRtl=“false”

作用:表示支持Rtl布局,即支持右右到左;系统将全面开启RTL API来显示您的RTL布局;
主要是类似藏文等,书写和阅读模式从右往左的文字。它的布局要求就是从右往左。
注意: 如果你的app不用在意该用户群体,或者没有兼容,那么可以不开启。
默认值:true

  android:roundIcon="@mipmap/ic_launcher_round"

作用:设置圆形Icon图标,主题风格为round时,从该值提取applogo进行显示

  android:icon="@mipmap/ic_launcher"

作用:app 的logo值,主要在luncher之中显示时展示的logo。

  android:logo="@mipmap/ic_launcher"

作用:android 的Logo值,一般TV 应用的app logo 就从这个取值,更大。
默认值:如果没设置时,默认提取android:icon 的值

2.< activity >标签

android:clearTaskOnLaunch="true"

作用:每次从launcher之中启动该app的话,都会从当前activity启动,并且销毁该app已经存在的其他activity。就是销毁相同task下存在的其他activity。
注意:该配置只能在设置了Main的Activity下配置才有效。其他activity配置无效。
默认值:false

android:resizeableActivity="true"

作用:设置当前activity 支持分屏模式
注意:该配置只是设置支持,而不代表启动当前页面就会进入分屏模式。
默认值:false

android:excludeFromRecents="true"

作用:是否应将该 Activity 启动的任务排除在最近使用的应用列表(即概览屏幕)之外。
注意:如果想整个app 都生效,建议设置在该task根activity下,也就是第一个启动的activity之下
默认值:false

android:stateNotNeeded="true"

作用:则当Activity重新启动时不会调用onSaveInstanceState()方法,同样,onCreate()方法中的Bundle参数将会用null值传进去,也就是说,Activity每次启动都跟第一次启动一样。
注意:
默认值:false

android:process=":xxxx"

作用:通过新的进程启动该activity 或者servive。这个属性一般情况下会在Service标签之中使用。也就是在新的task模式下启动该activity或者service对象。
注意:如果该activity是通过其他进程启动,那么通讯就需要采用进程中通讯方式了
默认值:null

android:exported="false"

作用:是否支持其它应用隐式调用当前组件。
注意:如果设置为true 那么其他的app 也就是允许非该app 的 user ID的Application的组件调用activity。
也就是可以外部访问你的activity。 可能会存在安全隐患。
默认值:如果包含有intent-filter 默认值为true; 没有intent-filter默认值为false。

android:finishOnCloseSystemDialogs="true"

作用:如果弹出系统对话框的时候,是否允许关闭当前Activity。 true 允许关闭,false 不允许关闭
注意:这个属性,通常是配合Activity的Theme样式定义为Dialog布局的时候使用的。你本身是一个Dialog,这个时候如果Android 系统也进行弹框了,是否允许系统将你这个dialogActivity给关闭的标签。普通主题模式下的Activity,该标签没有太大意义。
默认值:false

 android:permission="android.permission.MANAGE_USB"

作用:给自己当前Activity 添加访问权限,如果其他apk访问你的activity时,它必须申请你的aciivity设置的权限,这个权限可以使用android 系统的权限。也可以自定义你的权限。
注意:android 之中除了系统的一些权限配置,我们还可以给自己的应用创建一些自定义的权限。通常自定义的权限会搭配这个标签来使用
默认值:无
****:
自定义权限的配置:在 的外面,通常是在< uses-permission > 的下面,自己定义一套权限

<permission 
    android:description="string resource"
    android:icon="drawable resource"
    android:label="string resource"
    android:name="*.permission.*" 
    android:permissionGroup="string"
    android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />

自定义的权限 命名方式*.permission.* 必须采用该模式进行

其他app使用和申请该权限

<uses-permission 
    android:name="com.demo.permission.OPEN_MY_ACTIVITY"  />

使用方式其实就和申请系统权限类似的方式了。 只是名称是自定义的。

 android:launchMode="singleTop"

作用:设置activity的启动模式。在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中。当我们点击返回(back)键,这些Activity实例又将从任务栈中一一移除,遵循的原则是“后进先出”(先进后出)。当我们多次启动同一个Activity,系统也会创建多个实例放入任务栈中,这样岂不是很耗费内存资源?为了解决这一问题,Android为Actiivty提供了启动模式。
注意:
默认值:standard .

standard:每次跳转时都会创建该Activity的新实例,点击返回键,可以看到的是按照刚才创建Activity实例的倒序依次出现,类似退栈的操作,而刚才跳转的操作就是压栈的操作。
singleTop:每次跳转时系统会先在栈结构中寻找是否有一个当前Activity实例正位于栈顶,如果有则不再生成新的,而是直接使用。 如果没有就会创建新的Activity位于栈顶,但是如果在栈中存在该Activity实例,但是不位于栈顶,那么也会创建一个新的Activity,而不会将已经存在的实例移动到栈顶。
singleTask:每次跳转时,如果栈中存在该Activity,系统会将该Activity前面的全部堆积的实例进行释放,让当前Activity处于栈顶。如果没有,就会创建新的。
singleInstance:每次跳转时,当前Activity会创建一个新的独立的栈结构,用来存在该Activity实例。

  android:taskAffinity="com.android.systemui.net"

作用:定义当前Activity启动时任务栈的名称。
注意:taskAffinity 属性主要和 singleTask 或者 allowTaskReparenting 属性配对使用,在其他情况下没有意义。
默认值:无 ,通常情况下Activity运行的栈名为应用的包名,如果我们定义了栈名之后,将会运行在指定的栈名的任务栈之中。会和其他程序的任务栈重叠。

 android:supportsPictureInPicture="true"

作用:支持开启画中画模式
注意:Android 8.0 PictureInPicture 画中画模式 。只有在android 8.0 才有效果。配置完毕之后,还需要在acitivity之中配置相关方法才能最终生效。
默认值:空

android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|locale|layoutDirection"

作用:控制屏幕发生变化之后,Activity 界面重新绘制的流程和属性
注意:配置之后,当发生了配置值所出现的情况时,会在onConfigurationChanged()方法之中进行回调,会告知出现了何种情况
取值范围:如果没有配置该属性,那么当屏幕发生变化时 activity将会调用onSaveInstanceState方法,然后重构当前Activity。 也就是会重新调用onCreate方法然后会再触发onRestoreInstanceState()方法来恢复onSaveInstanceState方法之中存储的数据。而设置了该值之后,将不会走onCreate 方法,而是会在onConfiguration方法进行回调。
mcc: 国际移动用户识别码所属国家代号是改变了,sim被侦测到了,去更新mcc MCC是移动用户所属国家代号
mnc: 国际移动用户识别码的移动网号码是改变了, sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网
locale: 用户所在区域发生变化,一般是用户切换了语言时,切换后的语言会显示出来
touchscreen: 触摸屏发生了改变------通常是不会发生的
keyboard :键盘发生了改变----例如用户用了外部的键盘
keyboardHidden: 键盘的可用性发生了改变
navigation: 导航发生了变化-----通常也不会发生
screenLayout :屏幕的显示发生了变化------不同的显示被激活
fontScale: 字体比例发生了变化----选择了不同的全局字体
uiMode: 用户的模式发生了变化
orientation: 屏幕方向改变了—横竖屏切换
screenSize: 屏幕大小改变了
smallestScreenSize: 屏幕的物理大小改变了,如:连接到一个外部的屏幕上

 android:screenOrientation="locked"

作用:锁定当前Activity 的屏幕方向。例如固定为横屏,或者固定为竖屏,不管手机如何旋转,界面都不会改变
注意:
默认值:unspecified
取值范围:
unspecified:跟随系统显示方向,横屏竖屏随意。
landscape:固定为横屏
portrait:固定为竖屏
user:用户当前的首选方向
behind:与活动堆栈中的activity相同方向,就是跟随前一个Activity的方向。
sensor:根据物理传感器方向转动,用户90度、180度、270度旋转手机方向,activity都跟着变化。
sensorLandscape:根据传感器,进行横屏固定旋转,一般游戏常见的配置方式。只允许界面横屏。
sensorPortrait:根据传感器,进行竖屏固定旋转。只允许界面在竖屏下进行切换。
nosensor:禁止根据传感器进行屏幕旋转,默认显示效果由系统配置的屏幕方向决定。
fullSensor:固定按照传感器方向进行旋转屏幕,与设置为“sensor”时情况类似。—感觉这没有啥意义啊,可能是我了解的少吧
fulluser:模式和user类似,固定按照user的方向进行旋转。—感觉这没有啥意义啊,可能是我了解的少吧
locked:锁定模式,将activity 锁定为当前的屏幕方向。

 android:isolatedProcess="false"

作用:设置 true 意味着,当前实例会在一个特殊的进程下运行,这个进程与系统其他进程分开且没有自己的权限。类似沙盒的隔离进程之中
注意:通常是Service才会用到的标记。
默认值:false

0

评论区