前言
Android开发过程中,经常会用到AndroidManifest中的标签,但是很容易遗忘标签对应的用途,所以就花了些时间在网上寻找一些资料,并将其整理成一篇博客,以便在使用中很快就可以搜索到对应标签的用途。
本篇博客内容包括AndroidManifest中涉及到的:
基本标签、Application标签
Activity标签、Service标签、Provider标签、Receiver标签
一、基本标签
1. <?xml version="1.0" encoding="utf-8"?>
version: xml的版本
encoding: 编码格式
2. AndroidManifest
每一个Android应用都包含一个manifest文件,即AndroidMnifest.xml,用于配置应用的各方面信息;
3. manifest
是AndroidManifest.xml根节点,必须包括一个<application>,并且需要设置xmlns:android和包属性;
4. package
指定本应用程序的包名
5. sharedUserId
表明数据权限,默认情况下,Android系统会给每个apk分配一个唯一的UserId,所以是默认禁止不同apk访问共享数据的;
若要共享数据,第一可采用偏好存储,第二可采用sharedUserId,讲不同apk的sharedUserId都设为一样,则这些apk就可以共享数据;
6. sharedUserLabel
共享的用户名,设置sharedUserId才会有意义
7. installLocation
程序安装位置,可选:internalOnly、auto、perferExternal,默认值为auto
链接:
internalOnly:apk必须安装到内部存储空间,且安装后,无法移动到SD卡
auto:系统自动根据存储空间选择安装位置(内部存储和SD卡),安装后可相互移动
perferExternal:优先考虑安装SD卡
8. versionCode
版本号,更新程序时这个数字要增加,谷歌商店检测的就是这版本号
9. versionName
版本名称,用户可见,例如1.0,1.2等
10. compatible-screens
程序需要在此标签中声明程序所需权限,可以是自带,可以使自定义
11. permission
自己定义的权限,就是别人调用这个程序时需要的权限
12. user-permission
程序需要在此标签中声明程序所需的权限
13. permission-tree
权限树,能够放置更多权限的命名空间,元素本身并不声明权限
二、Application标签
1. application
应用的声明,包含众多子元素,各个组件都需在此标签范围内声明
2. name
自定义的Application类的名称,应用启动时,此类将在应用的其他组件之前被实例化
3. allowBackup
是否允许备份和恢复应用程序数据
链接:
当allowBackup标志值为true时,即可通过adb backup和adb restore来,一般情况下,手动设置为false;
4. label:
应用名称,标签应被设置为字符串资源引用
5. icon
定义应用的图标(方角),且为每个组件默认的图标,必须设置为drawable、mipmap资源的引用,无默认值
6. roundIcon
定义程序的圆形图标(圆角),使用roundIcon是为了做android图标适配
7. supportRtl
是否支持从右到左(原来RTL就是right-to-left 的缩写...)的布局。
链接:
如果设置为true,targetSdkVersion设置为17或更高的版本,各种RTL的API将被激活,系统使用您的应用程序可以显示RTL布局。
如果设置为false,亦或者targetSdkVersion为16或者更低,RTL的API将被忽略或不影响应用程序(你的布局会从左至右)。
此属性的默认值是false。此属性被添加到API 17。
8. theme
给应用程序中所有的Activity设置默认的主题,属性值要引用一个样式资源。每个独立的Activity的主题会被它们自己的theme属性所覆盖。
9. tool:replace
当我们的项目的某些属性和第三方库中的属性有冲突时或者我们想修改第三方库中某些资源的属性时,我们就需要使用tools:replace来处理。
10. userCleartextTraffic
应用程序是否使用明文网络流量,例如明文Http
链接:
目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。
当属性设置为“ false”时,平台组件(例如,HTTP和FTP堆栈,DownloadManager和MediaPlayer)将拒
绝应用程序使用明文流量的请求。强烈建议第三方库也采用此设置。避免明文通信的主要原因是缺乏机密性,真
实性和防篡改保护;网络攻击者可以窃听所传输的数据,并且还可以对其进行修改而不会被检测到。
11. allowClearUserData
是否给用户删除用户数据的权限,如果为true用户就有清除数据的权限,false则没有;默认为true;
12. allowTaskReparenting:
指定应用程序中定义的Activity能否从他们当前的任务中转移到这个有亲缘关系的任务中。
链接:
当一个与当前任务有亲缘 关系的任务被带到前台时,用这个属性来指定应用程序中定义的Activity能否从他们
当前的任务中转移到这个有亲缘关系的任务中。
如果设置为true, 则能够转移,如果设置为false,则应用程序中的Activity必须保留在它们所在的任务中。
默认值是false。<activity>元素有它们自己的allowTaskReparenting属性,它能够覆盖<application>元素中的设置;
13. bacupAgent
定义应用程序备份代理的实现类的名称,无默认值
14. debuggable
应用是否可以使用debug,甚至运行在用户模式下,true为可以,false则不能。默认为false;
15. description
定义应用程序相关的用户可读文本,它要比应用程序标签更长更详细,它的值必须被设置为字符串资源的引用,无默认值;
16. enabled
指定Android系统能否实例化应用程序组件,true为可以,false则不能够实例化,且所有组件都会被禁用,属性默认为true;
17. hasCode
用于设置应用程序是否包含了代码,如果设置为true,则包含代码,否则不包含代码;
链接:
这个属性设置为false时,系统在加载组件的时候不会试图加载任何应用程序的代码,默认值是true;
18. hardwareAccelerated
是否为所有Activity和View对象启用硬件加速渲染,如果为true则启动,false则不会启用,默认值是false ;
19. killAfterRestore
指定在全系统恢复期间,应用的设置被恢复之后,对应的应用程序是否应该被终止。默认值是true;
链接:
这个属性用于指定在全系统的恢复操作期间,应用的设置被恢复以后,对应的问题程序是否应该被终止。单包恢复操作不会导致应用程序被关掉。
全系统的复原操作通常只会发生一次,就是在电话被首次建立的时候。第三方应用程序通常不需要使用这个属性。
默认值是true,这意味着在全系统复原期间,应用程序完成数据处理之后,会被终止。
20. logo
给应用程序设置一个Logo,而且它也是所有Activity的默认Logo,设置时必须要引用图片资源,且无默认
Logo ;
21. manageSpaceActivity
定义了一个完整的Activity子类的名字,系统能够把这个名字加载到由用户管理被应用程序所占用的设备上的
内存;
22. permission
定义了一个权限,威力跟应用程序进行交互,客户端必须要有这个权限。
链接:
这个属性是为给所有的应用程序组件设置权限提供了便利的方法。它能够被独立组件所设置的permission属性
所覆盖。
23. persistent
设置应用程序是否应该时刻保持运行状态,true则保持,false则不保持,默认值是false ;
链接:
普通的应用程序不应该设置这个属性,持久运行模式仅用于某些系统级的应用程序;
24. process
用来定义一个进程名称,应用程序所有的组件都应该运行在这个进程中。
每个组件都能够用它自己process属性的设置来覆盖这个<application>元素中的设置。
链接:
默认情况下,当应用程序的第一个组件需要运行时,Android系统就会给这个应用程序创建一个进程。然后,
应用中的所有组件都运行在这个进程中。
默认的进程名是跟<manifest>元素中设置的包名进行匹配的。通过设置这个属性,能够跟另外一个应用程序共享一个进程名,
能够把这两个应用程序中的组件都安排到同一个进程中运行---但是仅限于这两个应用程序共享一个用户ID,并且带有相同的数字证书。
如果这个进程名称用“:”开头,那么在需要的时候,就会给应用程序创建一个新的、私有的进程。如果进程名用小写字符开头,
就会用这个名字创建一个全局的进程,这个全局的进程能够被其他应用程序共享,从而减少资源的使用。
25. restoreAnyVersion
设置这个属性表示应用程序准备尝试恢复任何备份的数据集,默认值为false;
链接:
即使备份比设备上当前安装的应用程序的版本要新。这个属性设置为true,即使是在版本不匹配而产生数据兼
容性提示的时候,也会允许备份管理来恢复备份的数据,所以要谨慎使用。
26. taskAffinity
这个属性给应用的所有的Activity设置了一个亲缘关系名,除了那些用它们自己的taskAffinity属性设置不同亲缘关系的组件。
链接:
默认情况下,应用程序中的所有Activity都会共享相同的亲缘关系,亲缘关系的名称跟由<manifest>元素设置的包名相同。
27. uiOptions
设置Activity的UI的额外选项;
链接:uiOption的两个值
none:默认设置,没有额外的UI选项。
splitActionBarWhenNarrow : 在水平空间受到限制的时 候,会在屏幕的底部添加一个用于显示ActionBar中操作项的栏,
例如:在纵向的手持设备上。而不是在屏幕顶部的操作栏中显示少量的操作项。
它会把操作栏分成上下两部分,顶部用于导航选择,底部用于操作项目。
这样就会确保可用的合理空间不仅只是针对操作项目,而且还会在顶部给导航和标题留有空间。
菜单项目不能被分开到两个栏中,它们要显示在一起。
28. networkSecurityConfig
详情见:https://developer.android.google.cn/training/articles/security-config.html
三、Activity标签
1. name
实现Activity的类的名称,是Activity的子类,表示当前Activity的类名,必须指定且需带包名
2.launchMode
Activity的启动模式,默认为standard模式;
链接:
standard--标准模式:未指定启动模式时默认标准默认,每启动一个新的活动就会创建一个新的实例,并将其
入栈,放置栈顶
singelTop--栈顶复用模式:指定此模式的活动被启动时,会检查任务栈的栈顶是否是该活动的实例,如果是
则复用,不是则重新创建实例,放置栈顶
singleTask--栈内复用模式:指定此模式的活动被启动时,会检查当前任务栈内是否存在该活动的实例,如
果有则复用,没有则重新创建,放置栈顶
singleInstance--独享任务栈模式:指定此模式的活动被启动时,会启用一个新的任务栈来管理这个活动,
且此任务栈只能存在这一个实例
如何设置Activity的启动模式: AndroidManifest--->Activity标签--->设置LaunchMode即可
3. configChanges
列出Activity将自行处理的配置更改,在运行发生配置更改时,默认情况下会关闭Activity然后将其重新启
动,但使用该属性声明配置将阻止Activity重新启动。Activity会保持运行状态,并且系统会调用其
onConfiguration方法;
链接
1)不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行
一次,切竖屏时会执行两次;
2)设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命
周期,切横、竖屏时只会执行一次;
3)设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会
重新调用各个生命周期,只会执行onConfigurationChanged方法从Android 3.2(API 13)之后,
如果AndroidManifest.xml里设置的MiniSdkVersion和TargetSdkVersion属性大于等于13的情况下,
如果你想阻止程序在运行时重新加载Activity, 除了设置"orientation", 你还必须置"ScreenSize"。
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
这样做使得切换屏幕时,不会重新调用各个生命周期,只会执行activity中onConfigurationChanged方法;
4. screenOrientation
Activity 在设备上的显示方向。如果 Activity 是在多窗口模式下运行,系统会忽略该属性;
链接--常用属性:
unspecified: 不指定,默认值,由系统选择方向;
landscape :横屏
portrait :竖屏
5. theme
对定义 Activity 总体主题的样式资源的引用。它会自动将 Activity 的上下文设置为使用该主题,它还可
以引发 Activity 启动前的“启动”动画以更加符合 Activity 的实际外观;
链接:
如果未设置该属性,则 Activity 继承通过 < application > 元素的 theme 属性为应用整体设置的主
题。 如果该属性也未设置,则使用默认系统主题;
6. windowSoftInputMode
Activity 的主窗口与包含屏幕软键盘的窗口的交互方式。
链接---设置该属性的影响:
当 Activity 成为用户注意的焦点时软键盘的状态 — 隐藏还是可见。
对 Activity 主窗口所做的调整 — 是否将其尺寸调小以为软键盘腾出空间,或者当窗口部分被软键盘遮挡时
是否平移其内容以使当前焦点可见
7. alwaysRetainTaskState
系统是否始终保持Activity所在任务的状态,true表示保持,false表示允许系统在特定情况下将任务重置
到其初始状态,默认值为false; 该属性只对任务的根Activity有意义,对于所有其他Activity,均忽略该
属性
8. documentLaunchMode
指定每次启动任务时应如何向其中添加新的Activity实例。
链接:
该属性允许用户让多个来自同一应用的文档出现在概览屏幕中,该属性有四个值,对于除“none”和“never”以
外的值,必须使用 launchMode="standard" 定义 Activity。 如果未指定此属性,则使
用 documentLaunchMode="none"
9. enabled
系统是否可将Activity实例化,true表示可以,false表示不可以,默认值为true ;
10. excludeFromRecents
是否应该将该Activity启动的任务排除在最近使用的应用列表(概览屏幕)之外,默认值是false;
链接:
当该 Activity 是新任务的根 Activity 时,此属性确定任务是否应出现在最近使用的应用列表中。 如果
应将任务排除在列表之外,请设置“true”,如果应将其包括在内,则设置“false”。
11. exported
Activity是否可由其他应用的组件启动,true表示可以,false表示不可以。默认值取决于Activity是否包
含Intent过滤器;
链接:
默认值取决于 Activity 是否包含 Intent 过滤器。没有任何过滤器意味着 Activity 只能通过指定其确
切的类名称进行调用。 这意味着 Activity 专供应用内部使用(因为其他应用不知晓其类名称)。 因此,
在这种情况下,默认值为“false”。另一方面,至少存在一个过滤器意味着 Activity 专供外部使用,因此
默认值为“true”,该属性并非限制 Activity 对其他应用开放度的唯一手段。 您还可以利用权限来限制哪些
外部实体可以调用 Activity(请参阅 permission 属性)若值为false,则Activity只能由统一应用的
组件或使用同一用户ID的不同应用启动;
12. finishOnTaskLaunch
每当用户再次启动该任务时,是否应关闭现有Activity实例,true表示关闭,false表示不关闭,默认值是
false ;
链接:
如果该属性和 allowTaskReparenting 均为“true”,则优先使用该属性。 Activity 的亲和关系会被忽
略。 系统不是更改 Activity 的父项,而是将其销毁
13. hardwareAcclerated
是否为此Activity启用硬件加速渲染,true表示启动,false表示不启动,默认值是false ;
14. icon
Activity的图标,设置时引用可绘制资源(drawble)
15. label
Activity的标签,Activity呈现给用户时显示在屏幕上
16. noHistory
当用户离开Activity并且其在屏幕上不再可见时,是否应从Activity堆栈中将其移除并调用其finish方
法,默认为false,true表示Activity不会留下历史轨迹。
17. maxRecents
概览屏幕中位于此Activity根位置的任务数上限,默认值为 16
链接: 达到该条目数时,系统会从概览屏幕中移除最近最少使用的实例。 该值必须是整数,有效值为50(低内存设备使用 25)
18. multiprocess
是否可将Activity实例启动到启动该实例的组件进程内,true表示可以,false表示不可以,默认值false;
19. allowEmbedded
表示该 Activity 可作为另一 Activity 的嵌入式子项启动,属性的默认值为 false
链接:
它尤其适用于子项所在的容器(如 Display)为另一 Activity 所拥有的情况。 例如,用于 Wear 自定义
通知的 Activity 必须声明此项,以便 Wear 在其上下文流中显示 Activity,后者位于另一进程中。
20.allowTaskReparenting
当启动 Activity 的任务接下来转至前台时,Activity 是否能从该任务转移至与其有亲和关系的任
务。“true”表示它可以转移,“false”表示它仍须留在启动它的任务处。
21. parentActivityName
Activity逻辑父项的类名称,此处的名称必须与为相应 < activity > 元素的 android:name 属性指定
的类名称一致,系统会读取该属性,以确定当用户按下操作栏中的“向上”按钮时应该启动哪一个 Activity;
22. permission
客户端启动 Activity 或以其他方式令其响应 Intent 而必须具备的权限的名称。
链接:
如果系统尚未向 startActivity() 或 startActivityForResult() 的调用方授予指定权限,其
Intent 将不会传递给 Activity,如果未设置该属性,则对 Activity 应用 < application > 元素的
permission 属性设置的权限。 如果这两个属性均未设置,则 Activity 不受权限保护
23. process
运行 Activity 的进程的名称
链接:
正常情况下,应用的所有组件都在为应用创建的默认进程名称内运行,无需使用该属性。 但在必要时,可以使
用该属性替换默认进程名称,以便让应用组件散布到多个进程中
24. resizeableActivity
指定应用是否支持多窗口显示。
链接:
如果将该属性设置为 false,Activity 将不支持多窗口模式。 如果该值为 false,且用户尝试在多窗口
模式下启动 Activity,该 Activity 将全屏显示;该属性是在 API 级别 24 添加的,如果应用面向 API
级别 24 或更高级别,但未对该属性指定值,则该属性的值默认设为 true
25. autoRemoveFromRecents
由具有该属性的Activity启动的任务是否一直保留在概览屏幕中,直至任务重最后一个Activity完成为止,
true则自动从概览屏幕中移除任务;
26. stateNotNeeded
能否在不保存Activity状态的情况下,将其终止并成功重新启动,true表示可在不考虑之前状态的情况下重
新启动,false表示需要之前的状态,默认值是false ;
27. supportsPictureInPicture
指定Activity是否支持画中画显示
链接:
如果 android:resizeableActivity 是 false,系统会忽略该属性。该属性是在 API 级别 24 添加
的;
28. taskAffinity
与Activity有着亲和关系的任务
链接:
默认情况下,应用中的所有 Activity 都具有相同的亲和关系。您可以设置该属性来以不同方式组合它们,甚
至可以将在不同应用中定义的 Activity 置于同一任务内。 要指定 Activity 与任何任务均无亲和关系,
请将其设置为空字符串,如果未设置该属性,则 Activity 继承为应用设置的亲和关系(请参阅 <
application > 元素的 taskAffinity 属性)。 应用默认亲和关系的名称是 < manifest > 元素设置
的软件包名称
29. banner
一种为其关联提供扩展图形化横幅的可绘制资源,将其与activity标签联用可为特定的Activity提供默认横
幅,也可以与Application联用,为所有activity土工横幅,设置此属性需要引用可绘制资源的引用
(drawable), 该属性无默认值;
30. uiOptions
针对 Activity UI 的附加选项,该属性是在 API 级别 14 添加的;
31. clearTaskOnLaunch
是否每当从屏幕重新启动任务时都从中移除根Activity以外的所有Activity, true表示始终将任务清除到
只剩根Activity,false表示不做清除,默认值为false ;
四、Service标签
1. name
用于指定实现该服务的Service子类的类名,它应该是完整的Java类名;
2. enabled
用于指示该服务是否能够被实例化。
链接:
如果设置为true,则能够被实例化,否则不能被实例化。默认值是true。
<application>元素有它自己的enabled属性,它的这个属性适用于应用中所有的组件,包括service组件。
对于被启用的服务,<application>和<service>元素的enabled属性都必须是true(默认值都是true)。
如果有一个元素的enabled属性被设置为false,该服务就会被禁用,而不能被实例化。
3. exported
用于指示该服务是否能够被其他应用程序组件调用或跟它交互。
链接:
如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同
用户ID的应用程序才能启动或绑定该服务。
它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务
只能在应用程序的内部使用(因为其他外部使用者不会知道该服务的类名),因此这种情况下,这个属性的默认值是false。
另一方面,如果至少包含了一个过滤器,则意味着该服务可以给外部的其他应用提供服务,因此默认值true。
4. icon
定义了一个代表服务的图标;
链接:
必须要引用一个包含图片定义的可绘制资源。如果这个属性没有设置,则会使用<application>元素的icon属性所设定的图标来代替。
5. label
用于设定一个要显示给用户的服务的名称。
链接:
如果没有设置这个属性,则会使用<application>元素的label属性值来代替。
无论是<service>设定的标签,还是<application>元素设定的标签,它们都是该服务所有的Intent过滤器的默认标签。
这个标签应用引用一个字符串资源,以便它能够像用户界面中的字符串一样能够被本地化。
但是,为了开发应用程序方便,也可以使用原生字符串来设置这个属性。
6. permission
定义了要启动或绑定服务的实体必须要有的权限;
链接:
如果调用者的startService()、bindService()和stopService()方法没有被授予这个权限,
那么这些方法就不会工作,并且Intent对象也不会发送给改服务。
如果这个属性没被设置,那么通过<appliction>元素的permission属性所设定的权限就会适用于该服务。
如果<application>元素也没有设置权限,则该服务不受权限保护。
7. process
用于设定服务所运行的进程名称;
链接:
应用程序的所有组件都运行在给应用程序创建的进程中,进程名与应用程序的包名相同。
<application>元素的process属性能够给应用程序的所有组件设置一个不同的默认名称。
但是每个组件自己的process属性都能够覆盖这个默认值,这样允许把应用程序分离到不同的多个进程中。
五、Provider标签
1. name
用于定义内容提供器的实现类的名称,它是ContentProvider类的一个子类,即Provide的类名称;
2. authorities
标识内容提供器范围内的数据URI的授权列表,有多个授权时,要用分号来分离每个授权;
链接:
为了避免冲突,授权名应该使用Java样式的命名规则(如:com.example.provider.cartoonprovider)。
通常,用ContentProvider子类名称来设定这个属性。这个属性没有默认值,至少要指定一个授权。
3. enabled
用于指定这个内容提供器是否能够被系统安装。设置为true,则可以安装;否则不能安装。默认值是true。
链接:
<application>元素有它自己的enabled属性,这个属性会应用给所有的应用程序组件,包括内容提供器。
<application>和<provider>的enabled属性都必须设置为true(它们的默认值都是true)。
如果有一个设置为false,那么提供器就被禁止安装。
4. exported
用于指定该内容提供器是否能够被其他的应用程序组件使用,默认值是true;
链接:
如果设置为true,则可以被使用,否则不能被使用。如果设置为false,该提供器只对同名的应用程序或有相同用户ID的应用程序有效。
虽然能够使用这个属性来公开内容提供器,但是依然还要用permission属性来限制对它的访问。
5. grantUriPermission
用于设定那些对内容提供的数据没有访问权限的访问者;
链接:
这种授权是应用程序提供了一种一次性访问被权限所保护的数据的方法。
例如,当一个e-mail包含了一个附件时,mail应用程序就可以调用适当的浏览器来打开附件,
即使这个浏览器没有查看所有内容提供器数据的权限。
如果要启用这个功能,既可以通过把这个属性设置为true来完成,也可以通过定义<grant-uri-permission>子元素来实现,
在切换RUI时,必须调用Context.revokeUriPermission()方法从提供器把权限删除。
6. icon
定义一个代表内容提供器的图标;
链接:
它必须要引用一个包含图片定义的可绘制资源。如果这个属性没有设置,那么就会使用应用程序的<application>元素的icon属性值来代替。
7. process
用于定义内容提供器应该运行在那个进程中的进程名称。
链接:
应用程序的所有组件都运行在给应用程序创建的默认进程中。它有与应用程序包相同的名称。
<application>元素的process属性能够给其所有的组件设置一个不同的默认进程。
但是每个组件都能够用它们自己的process属性来覆盖这个默认设置,从而允许把应用程序分离到不同的多个进程中。
8. permission
用于设定客户端在读写内容提供器的数据时必须要有的权限的名称
9. readPermission
用于设置查询内容提供器的数据时,客户端所必须要有的权限。
10. writePermission
用于设置修改内容提供器的数据时,客户端所必须要有的权限。
11. initOrder
用于定义内容提供器应该被实例化的顺序,这个顺序是相对与相同进程所拥有的其他内容提供器的。
链接:
当内容提供器间有相互的依赖时,就需要设置这个属性,以确保它们能够按照其依赖的顺序被创建。
这个属性值是一个简单的整数,大的数字要被优先初始化。
12. label
用于给内容提供器定义一个用户可读的标签。如果这个属性没有设置,
那么它会使用<application>元素的label属性值来代替,设置时徐引用字符串资源。
13. multiprocess
用于设定是否能够在每个使用该内容提供器的客户端进程中都创建一个内容提供器的实例,
如果设置为true,这个能够在其每个客户端进程中创建一个实例,否则不可以。默认值是false。
14. syncable
用于设定内容提供器控制下的数据是否要与服务器上的数据进行同步,
如果设置为true,则要同步,否则不需要同步。
六、Receiver标签
1. name
指定广播接收器的实现类,它是BroadcastReceiver类的一个子类,通常为广播接收器的类名;
2. icon
定义了一个代表广播接收器的图标,这个属性必须用包含图片定义的可绘制资源来设定。如果没有设置这个属性,
会是应用<application>元素的icon属性值来代替。
3. label
给广播接收器设定一个用户可读的懂的文本标签。如果这个属性没有设置,那么就会使用<application>元素的label属性值来代替。
4. enabled
用于定义系统是否能够实例化这个广播接收器,如果设置为true,则能够实例化,如果设置为false,则不能被实例化。默认值是true。
链接:
<application>元素有它自己的enabled属性,这个属性会应用给应用程序的所有组件,包括广播接收器。
<application>和<receiver>元素的这个属性都必须是true,这个广播接收器才能够被启用。
如果有一个被设置为false,该广播接收器会被禁止实例化。
5. exported
用于指示该广播接收器是否能够接收来自应用程序外部的消息,如果设置true,则能够接收,如果设置为false,则不能够接收。
如果设置为false,这该接收只能接收那些由相同应用程序组件或带有相同用户ID的应用程序所发出的消息。
6. permission
用于定义把消息发送给该广播接收器的广播器所必须要有的权限。
链接:
如果没有设置这个属性,那么<application>元素的permission属性所设置的权限就适用于这个广播接收器。
如果<application>元素也没有设置权限,那么该接收器就不受权限的保护。
7. process
用于设置该广播接收器应该运行在那个进程中的进程名。
链接:
通常情况下,应用程序的所有组件都在给应用程序创建的默认进程中运行,它有与应用程序包名相同的名称。
<application>元素的process属性能够给它的所有组件设置一个不同的默认进程,但是它的每个组件自己的
process属性能够覆盖这个默认设置,这样就允许把一个应用程序分离到多个进程中。
上述资料来自于网上收集,如果小伙伴发现书写中出现错误,或者有更好的办法解决此问题,欢迎留言和私信。
参考文章:
https://www.cnblogs.com/rayray/p/3413756.html
https://www.cnblogs.com/zhangxia/p/4958298.html
https://www.jianshu.com/p/8598825222cc
https://blog.csdn.net/lyh1299259684/article/details/78563374
https://blog.csdn.net/winson_jason/article/details/8115846