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:path
android:pathPrefix
android: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" />
随机推荐
- 【转载】 【报错】ImportError: cannot import name 'downsample' —— lasagne模块 调用 theano 报错
原网址: https://blog.csdn.net/kz_java/article/details/125030733 ======================================= ...
- 纪念IE浏览器退役,哈哈哈!!!
网址: https://haokan.baidu.com/v?pd=wisenatural&vid=16024148879625055169 ========================= ...
- CUDA编译.cu文件报错unsupported GNU version! gcc versions later than 10 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check;
最近使用cuda11.3编译.cu文件,报错: #error -- unsupported GNU version! gcc versions later than 10 are not suppor ...
- [COCI2015-2016#1] UZASTOPNI 题解
前言 题目链接:洛谷. 题意简述 一棵有根树,节点数 \(n \leq 10^5\),每个点有权值 \(v_i \leq 2000\),现在选出一些点,满足: 一个点的父亲点若未被选择则其不能被选择. ...
- 《最新出炉》系列小成篇-Python+Playwright自动化测试-67 - 模拟手机浏览器兼容性测试
1.简介 在日常工作中,我们会遇到需要使用不同的硬件设备测试兼容性的问题,尤其是现在手机型号基本上是每个厂家每年发布一款新机型,而且手机的屏幕大小分辨率五花八门的,我们基本不可能全部机型都用真机测试一 ...
- STM32F3, STM32F4编程手册
1. Cortex-M4的内核设备 NVIC, Nested vectored interrupt controller SCB, System control block SysTick, The ...
- posix是什么都不知道,还好意思说你懂Linux?
Linux开发者越来越多,但是仍然有很多人整不明白POSIX是什么.本文就带着大家来了解一下到底什么是POSIX,了解他的历史和重要性. 一.什么是posix? 1. 概念 POSIX:可移植操作系统 ...
- CF1234D
CF1234D 链接: https://codeforces.com/problemset/problem/1234/D 题目大意: 给你一个字符串s,你需要完成如下q次询问 把 s 的第 p 位改为 ...
- 处理一直显示npm WARN using –force Recommended protections disabled.的问题
使用 npm config set force false 可以消除.
- Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型
Funcion Calling介绍 函数调用允许您将模型如gpt-4o与外部工具和系统连接起来.这对于许多事情都很有用,比如为AI助手赋能,或者在你的应用程序与模型之间建立深度集成. 如果您了解或者使 ...