Android复习(三)清单文件中的元素——>action、activity-alias、category、compatible-screens、data
<action>
- 语法:
-
<action android:name="string" />
- 包含于:
<intent-filter>
- 说明:
- 向 Intent 过滤器添加操作。
<intent-filter>元素必须包含一个或多个<action>元素。如果 Intent 过滤器中没有<action>元素,则过滤器不接受任何Intent对象。如需详细了解 Intent 过滤器和操作规范在过滤器中的作用,请参阅 Intent 和 Intent 过滤器。 - 属性:
-
android:name- 操作的名称。某些标准操作在
Intent类中定义为ACTION_string常量。要将其中一项操作分配给此属性,请在ACTION_后跟的string前面加上“android.intent.action.”。例如,对于ACTION_MAIN,请使用“android.intent.action.MAIN”;对于ACTION_WEB_SEARCH,请使用“android.intent.action.WEB_SEARCH”。对于您定义的操作,最好将应用的软件包名称用作前缀,以确保唯一性。例如,可按如下方式指定
TRANSMOGRIFY操作:<action android:name="com.example.project.TRANSMOGRIFY" />
<activity-alias>
- 语法:
-
<activity-alias android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:targetActivity="string" >
. . .
</activity-alias> - 包含于:
<application>- 可包含:
<intent-filter><meta-data>- 说明:
- Activity 的别名,由
targetActivity属性命名。目标必须与别名在同一应用中,并且在清单中必须在别名之前进行声明。别名将目标 Activity 呈现为独立实体。它可以具有自己的一组 Intent 过滤器,这些 Intent 过滤器(而不是目标 Activity 本身的 Intent 过滤器)决定了哪些 Intent 可以通过别名激活目标,以及系统如何处理别名。例如,别名的 Intent 过滤器可以指定“
android.intent.action.MAIN”和“android.intent.category.LAUNCHER”标志,以使其呈现在应用启动器中,即使目标 Activity 本身的任何过滤器都未设置这些标志。除了
targetActivity之外,<activity-alias>属性是<activity>属性的子集。对于子集中的属性,为目标设置的任何值都不会沿用于别名。不过,对于不在子集中的属性,为目标 Activity 设置的值也会应用于别名。 - 属性:
-
android:enabled- 系统是否可以通过此别名实例化目标 Activity。如果可以,则设为“
true”;如果不能,则设为“false”。默认值为“true”。<application>元素具有自己的enabled属性,该属性适用于所有应用组件,包括 Activity 别名。<application>和<activity-alias>属性必须都设为“true”,系统才能通过别名实例化目标 Activity。如果其中任一属性设为“false”,则别名不起作用。 android:exported- 其他应用的组件是否可以通过此别名启动目标 Activity。如果可以,则设为“
true”;如果不能,则设为“false”。如果设为“false”,则只有与别名在同一应用中的组件或具有同一用户 ID 的应用的组件可以通过别名启动目标 Activity。默认值取决于别名是否包含 Intent 过滤器。没有任何过滤器表示只有指定别名的确切名称才能通过别名调用 Activity。这意味着别名仅供应用内部使用(因为其他应用不知道其名称),所以默认值为“
false”。另一方面,至少存在一个过滤器意味着别名供外部使用,所以默认值为“true”。 android:icon- 通过别名呈现给用户时目标 Activity 的图标。如需了解详情,请参阅
<activity>元素的icon属性。 android:label- 通过别名呈现给用户时别名的用户可读标签。如需了解详情,请参阅
<activity>元素的label属性。 android:name
- 别名的唯一名称。该名称应类似于完全限定类名。但是,与目标 Activity 的名称不同,别名名称是任意的,它不引用实际类。
-
android:permission- 客户端要通过别名启动目标 Activity 或让其执行某项操作而必须具备的权限的名称。如果没有向
startActivity()或startActivityForResult()的调用方授予指定的权限,将无法激活目标 Activity。此属性会取代为目标 Activity 本身设置的任何权限。如果未设置此属性,则无需权限即可通过别名激活目标。
如需详细了解权限,请参阅简介中的权限部分。
android:targetActivity- 可通过别名激活的 Activity 的名称。此名称必须与清单中别名前面的
<activity>元素的name属性匹配。
<category>
- 语法:
-
<category android:name="string" />
- 包含于:
<intent-filter>- 说明:
- 向 Intent 过滤器添加类别名称。如需详细了解 Intent 过滤器和类别规范在过滤器中的作用,请参阅 Intent 和 Intent 过滤器。
- 属性:
-
android:name- 类别的名称。标准类别在
Intent类中定义为CATEGORY_name常量。此处分配的名称可以根据这些常量推导出来,方法是在CATEGORY_后跟的name前面加上“android.intent.category.”作为前缀。例如,CATEGORY_LAUNCHER的字符串值为“android.intent.category.LAUNCHER”。注意:为了接收隐式 Intent,您必须在 Intent 过滤器中添加
CATEGORY_DEFAULT类别。startActivity()和startActivityForResult()方法将所有 Intent 当作声明了CATEGORY_DEFAULT类别一样对待。如果您没有在 Intent 过滤器中声明该类别,则任何隐式 Intent 都不会解析为您的 Activity。自定义类别应将软件包名称用作前缀,以确保它们的唯一性。
<compatible-screens>
- 语法:
-
<compatible-screens>
<screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"
| "280" | "360" | "420" | "480" | "560" ] />
...
</compatible-screens>
- 包含于:
<manifest>- 说明:
- 指定应用与之兼容的各个屏幕配置。清单中只能包含
<compatible-screens>元素的一个实例,但可以包含多个<screen>元素。每个<screen>元素都指定了应用与之兼容的特定屏幕尺寸-密度组合。Android 系统不会读取
<compatible-screens>清单元素(无论是在安装时还是在运行时)。此元素仅用于提供信息,可供外部服务(如 Google Play)用于更好地了解应用与特定屏幕配置的兼容性,并为用户启用过滤功能。未在此元素中声明的任何屏幕配置都是应用与之不兼容的屏幕。因此,外部服务(如 Google Play)不会向使用此类屏幕的设备提供应用。注意:正常情况下,不应使用此清单文件元素。使用此元素可能会显著减少应用的潜在用户群,因为如果您未列出用户所用设备的屏幕配置,则它不允许用户安装您的应用。只有在万不得已时,也就是应用绝对无法与特定屏幕配置一起使用时,才能使用此元素。您不应使用此元素,而应按照支持多种屏幕指南,为针对不同屏幕尺寸和密度使用备用布局的多种屏幕提供可扩展支持。
如果您只想为应用设置最小屏幕尺寸,则应使用
<supports-screens>元素。例如,如果您希望应用仅适用于大屏幕和特大屏幕设备,则可以通过<supports-screens>元素声明您的应用不支持小屏幕和标准屏幕尺寸。外部服务(如 Google Play)会相应地过滤您的应用。您还可以使用<supports-screens>元素声明系统是否应根据不同的屏幕尺寸调整应用的大小。如需详细了解 Google Play 如何使用此清单元素和其他清单元素过滤应用,另请参阅 Google Play 上的过滤器文档。
- 子元素:
-
<screen>- 指定应用与之兼容的单个屏幕配置。
必须将此元素的至少一个实例放在
<compatible-screens>元素中。此元素必须同时包含android:screenSize和android:screenDensity属性(如果您未同时声明这两个属性,则此元素会被忽略)。属性:
- 示例
-
如果您的应用仅与小屏幕和标准屏幕兼容(无论屏幕密度如何),则必须指定十二种不同的
<screen>元素,因为每种屏幕尺寸都有六个不同的密度配置。您必须声明这些元素之一;您未指定的任何尺寸和密度组合都会被视为您的应用与之不兼容的屏幕配置。如果您的应用仅与小屏幕和标准屏幕兼容,则清单条目如下所示:<manifest ... >
...
<compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
<screen android:screenSize="small" android:screenDensity="mdpi" />
<screen android:screenSize="small" android:screenDensity="hdpi" />
<screen android:screenSize="small" android:screenDensity="xhdpi" />
<screen android:screenSize="small" android:screenDensity="xxhdpi" />
<screen android:screenSize="small" android:screenDensity="xxxhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
<screen android:screenSize="normal" android:screenDensity="mdpi" />
<screen android:screenSize="normal" android:screenDensity="hdpi" />
<screen android:screenSize="normal" android:screenDensity="xhdpi" />
<screen android:screenSize="normal" android:screenDensity="xxhdpi" />
<screen android:screenSize="normal" android:screenDensity="xxxhdpi" />
</compatible-screens>
<application ... >
...
<application>
</manifest>
<data>
- 语法:
-
<data android:scheme="string"
android:host="string"
android:port="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:mimeType="string" /> - 包含于:
<intent-filter>- 说明:
- 向 Intent 过滤器添加数据规范。该规范可以是只有数据类型(
mimeType属性),可以是只有 URI,也可以是既有数据类型又有 URI。URI 由其各个部分的单独属性指定:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]用于指定网址格式的以下属性是可选的,但也相互依赖:
同一
<intent-filter>元素中包含的所有<data>元素都对同一过滤器起作用。例如,以下过滤器规范:<intent-filter . . . >
<data android:scheme="something" android:host="project.example.com" />
. . .
</intent-filter>等同于以下规范:
<intent-filter . . . >
<data android:scheme="something" />
<data android:host="project.example.com" />
. . .
</intent-filter>您可以在
<intent-filter>内放置任意数量的<data>元素,为其提供多个数据选项。它的属性都没有默认值。如需了解 Intent 过滤器如何工作,包括如何根据过滤器来匹配 Intent 对象的规则,请参阅另一篇文档 - Intent 和 Intent 过滤器。另请参阅清单文件概览中的 Intent 过滤器部分。
- 属性:
-
android:scheme- URI 的架构部分。这是指定 URI 时最基本的属性;必须至少为过滤器设置一个
scheme属性,否则其他 URI 属性都没有意义。指定的架构应不带尾随冒号(例如,应指定
http,而不是http:)。如果为过滤器设置了数据类型(
mimeType属性),但未设置架构,则采用content:和file:架构。注意:Android 框架中的架构匹配区分大小写,这一点与 RFC 不同。因此,您应始终使用小写字母指定架构。
android:host- URI 授权方的主机部分。除非也为过滤器指定了
scheme属性,否则此属性没有意义。要匹配多个子网域,请使用星号 (*) 匹配主机中的零个或多个字符。例如,主机*.google.com匹配www.google.com、.google.com和developer.google.com。星号必须是主机属性的第一个字符。例如,主机
google.co.*无效,因为星号通配符不是第一个字符。注意:Android 框架中的主机名匹配区分大小写,这一点与正式的 RFC 不同。因此,您应始终使用小写字母指定主机名。
android:port- URI 授权方的端口部分。仅当同时为过滤器指定了
scheme和host属性时,此属性才有意义。 android:pathandroid:pathPrefixandroid:pathPattern- URI 的路径部分,必须以 / 开头。
path属性指定与 Intent 对象中的完整路径匹配的完整路径。pathPrefix属性指定只与 Intent 对象中的路径的初始部分匹配的部分路径。pathPattern属性指定与 Intent 对象中的完整路径匹配的完整路径,但它可以包含以下通配符:- 星号(“
*”)匹配出现零次到多次的紧邻前面的字符的一个序列。 - 句点后跟星号(“
.*”)匹配零个到多个字符的任意序列。
由于在从 XML 读取字符串时(在将其解析为模式之前)将“
\”用作转义字符,因此您需要进行双重转义。例如,字面量“*”将编写为“\\*”,字面量“”将编写为“\\\\”。这基本上与采用 Java 代码构造字符串时需要编写的内容一样。如需详细了解这三种类型的模式,请参阅
PatternMatcher类中的PATTERN_LITERAL、PATTERN_PREFIX和PATTERN_SIMPLE_GLOB的说明。 - 星号(“
android:mimeType- MIME 媒体类型,如
image/jpeg或audio/mpeg4-generic。子类型可以是星号通配符 (*),以指示任何子类型都匹配。Intent 过滤器经常会声明仅包含
android:mimeType属性的<data>。注意:Android 框架中的 MIME 类型匹配区分大小写,这一点与正式的 RFC MIME 类型不同。因此,您应始终使用小写字母指定 MIME 类型。
Android复习(三)清单文件中的元素——>action、activity-alias、category、compatible-screens、data的更多相关文章
- [android]清单文件中MAIN与LAUNCHER的区别
原文:[android]清单文件中MAIN与LAUNCHER的区别 MAIN 和 LAUNCHER,之前一直不注意这两个有区别,写程序的时候都放到一个filter中,前两天面试问到了,总结一下: MA ...
- Android Developer:合并清单文件
使用Android Studio而且基于Gradle构建.每一个App能在多个位置包括清单文件,比如在src/main文件夹下productFlavor.库.Android ARchive(AAR) ...
- Android清单文件具体解释(六) ---- <activity>节点的属性
1.android:allowTaskReparenting android:allowTaskReparenting是一个任务调整属性,它表明当这个任务又一次被送到前台时,该应用程序所定义的Acti ...
- struts.xml文件中package元素的各大属性讲解
Struts2中的包: Struts2使用包来组织Action,将Action放在包下来定义,通过package元素配置一个包,通过package的子元素action来定义一个Action: Stru ...
- python 从2个文件中提取不相同的内容并输出到第三个文件中
#-*- coding: UTF-8 -*- import re import sys import os str1=[] str2=[] str_dump=[] fa=open("A. ...
- Android软键盘在清单文件中所有配置含义
android:windowSoftInputMode 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事情: 1> 软键盘的状态——是否它是隐藏或显示——当活动 ...
- (备忘)android清单文件中<meta-data>标签,以及<intent-filter>下的<data>标签及其他标签
1.metadata可以写在application下也可以写在activity下,作为全局或activity内共享的数据 以键值对形式保存 <meta-data android:name=&qu ...
- Android ---------- 清单文件中Activity常规设置
<activity android:name="xxxxx" android:alwaysRetainTaskState="true" android:c ...
- Android 的四大组件都需要在清单文件中注册吗?
Activity . Service . ContentProvider 如 果 要 使 用 则 必 须 在 AndroidManifest.xml 中 进 行 注 册 , 而BroadcastRec ...
- Android笔记——在布局文件中插入另一个布局文件
假如有一个布局文件A.xml想把另外一个布局文件B.xml引进其布局,则可以通过下面的代码 <include layout="@layout/B" />
随机推荐
- 【Java】 WebService 校验机制
测试环境域名 不可见 正式环境域名 不可见 1.2.安全校验凭证 accessId(授权ID) 测试/正式待定 securityKey(加密密钥) 测试/正式待定 1.3.安全校验机制 1.3.1.在 ...
- 【Linux】Re01
一.三种网络模式 https://www.bilibili.com/video/BV1Sv411r7vd?p=7 1.桥接模式 该虚拟机和宿主机同一网段,和外部网络相通,但是占用网段地址资源,IP分配 ...
- 【Linux】00 Docker下载安装(CentOS8)
官方安装文档: https://docs.docker.com/engine/install/centos/ 先全部卸载Docker有无关系的一些环境 [保证一个干净的部署环境] sudo yum r ...
- nvtop —— GPU使用情况的可视化工具
安装: sudo apt install nvtop
- 一文搞懂DevOps、DataOps、MLOps、AIOps:所有“Ops”的比较
引言 近年来,"Ops"一词在 IT 运维领域的使用迅速增加.IT 运维正在向自动化过程转变,以改善客户交付.传统的应用程序开发采用 DevOps 实施持续集成(CI)和持续部署( ...
- MPTCP(一) :MPTCP概览
MPTCP概览 参考链接 MPTCP官网 http://multipath-tcp.org/ MPTCP入门 https://access.redhat.com/documentation/zh-cn ...
- ZABBIX Maps(拓扑图) 数据可视化
本篇文章将介绍如何利用zabbix内置 Maps模块展示主机数据指标以及如何关联触发器 构建业务地图让异常指标更加直观呈现 下面我将从网络设备.服务器和vmware esxi和IP主机去为大家解析za ...
- C#使用泛型方法将Datatable转换成List对象集合
在项目中遇到需要将Datatable转换成对象的需求,通过dr[0]取下标这种获取,如果数据的顺序发生了改变则需要改变全部,工作量大 foreach (DataRow dr in dt.Rows) { ...
- 万丈高楼平地起:UML类图
UML类图 UML类图 是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解.UML类图 是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型. 图示 类 ...
- POA:已开源,蚂蚁集团提出同时预训练多种尺寸网络的自监督范式 | ECCV 2024
论文提出一种新颖的POA自监督学习范式,通过弹性分支设计允许同时对多种尺寸的模型进行预训练.POA可以直接从预训练teacher生成不同尺寸的模型,并且这些模型可以直接用于下游任务而无需额外的预训练. ...