<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 属性(如果您未同时声明这两个属性,则此元素会被忽略)。

属性:

android:screenSize
必需属性。指定此屏幕配置的屏幕尺寸。

接受的值:

  • small
  • normal
  • large
  • xlarge

如需了解不同的屏幕尺寸,请参阅支持多种屏幕

android:screenDensity
必需属性。指定此屏幕配置的屏幕密度。

接受的值:

  • "ldpi"(约 120 dpi)
  • "mdpi"(约 160 dpi)
  • "hdpi"(约 240 dpi)
  • "xhdpi"(约 320 dpi)
  • "280"
  • "360"
  • "420"
  • "480"
  • "560"

如需了解不同的屏幕密度,请参阅支持多种屏幕

示例

如果您的应用仅与小屏幕和标准屏幕兼容(无论屏幕密度如何),则必须指定十二种不同的 <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 过滤器指定 scheme,则系统会忽略其他所有 URI 属性。
  • 如果没有为过滤器指定 host,则系统会忽略 port 属性以及所有路径属性。

同一 <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_LITERALPATTERN_PREFIX 和 PATTERN_SIMPLE_GLOB 的说明。

仅当同时为过滤器指定了 scheme 和 host 属性时,这些属性才有意义。

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的更多相关文章

  1. [android]清单文件中MAIN与LAUNCHER的区别

    原文:[android]清单文件中MAIN与LAUNCHER的区别 MAIN 和 LAUNCHER,之前一直不注意这两个有区别,写程序的时候都放到一个filter中,前两天面试问到了,总结一下: MA ...

  2. Android Developer:合并清单文件

    使用Android Studio而且基于Gradle构建.每一个App能在多个位置包括清单文件,比如在src/main文件夹下productFlavor.库.Android ARchive(AAR) ...

  3. Android清单文件具体解释(六) ---- &lt;activity&gt;节点的属性

    1.android:allowTaskReparenting android:allowTaskReparenting是一个任务调整属性,它表明当这个任务又一次被送到前台时,该应用程序所定义的Acti ...

  4. struts.xml文件中package元素的各大属性讲解

    Struts2中的包: Struts2使用包来组织Action,将Action放在包下来定义,通过package元素配置一个包,通过package的子元素action来定义一个Action: Stru ...

  5. python 从2个文件中提取不相同的内容并输出到第三个文件中

    #-*- coding: UTF-8 -*- import re import sys import os   str1=[] str2=[] str_dump=[] fa=open("A. ...

  6. Android软键盘在清单文件中所有配置含义

    android:windowSoftInputMode 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事情: 1>     软键盘的状态——是否它是隐藏或显示——当活动 ...

  7. (备忘)android清单文件中<meta-data>标签,以及<intent-filter>下的<data>标签及其他标签

    1.metadata可以写在application下也可以写在activity下,作为全局或activity内共享的数据 以键值对形式保存 <meta-data android:name=&qu ...

  8. Android ---------- 清单文件中Activity常规设置

    <activity android:name="xxxxx" android:alwaysRetainTaskState="true" android:c ...

  9. Android 的四大组件都需要在清单文件中注册吗?

    Activity . Service . ContentProvider 如 果 要 使 用 则 必 须 在 AndroidManifest.xml 中 进 行 注 册 , 而BroadcastRec ...

  10. Android笔记——在布局文件中插入另一个布局文件

    假如有一个布局文件A.xml想把另外一个布局文件B.xml引进其布局,则可以通过下面的代码 <include layout="@layout/B" />

随机推荐

  1. 【Hbase】1.3.1版本安装

    环境: 1核4G内存128G磁盘,三台机器同一个配置 192.168.242.131 192.168.242.132 192.168.242.133 -- Linux Centos7 x64 系统平台 ...

  2. 【Java】Enumeration Class 枚举类

    枚举类 enum 对象是有限的确定的.属于类的(静态的) 适合定义一组常量 例如固定的一些事物: - 季节 - 性别 - 状态 自定义枚举类的使用 public class EnumerationTe ...

  3. 【DataBase】MySQL 28 流程控制

    一.分支结构 1.IF函数 语法: IF(表达式1, 表达式2, 表达式3) 类似三元运算符,表达式1返回True Or False True执行表达式2,False执行表达式3 IF实现多分枝结构 ...

  4. python报错:`visualize_sharding` requires `rich` to be installed.

    Rich是python的一个绘图library,需要手动安装. 解决方法: pip install Rich

  5. 【转载】 Integrating New Games into Retro Gym

    https://medium.com/aureliantactics/integrating-new-games-into-retro-gym-12b237d3ed75 OpenAI's retro ...

  6. 后端开发学习敏捷需求-->产品价值的定位

    产品价值的定位 为什么要写这一系列文章 2023年网上报名学习了,敏捷软件需求的培训课程 ,一直都没有进行回顾,回顾学习,总结 业务分析的能力偏弱,学习和了解关于业务需求相关的方法和理论 每一年都有一 ...

  7. 电脑打不开CHM格式文件解决办法

    如图所示 比如说jdk1.8的api 双击打开后,这个样子 就ok了

  8. 新版的Django Docker部署方案,多阶段构建、自动处理前端依赖

    前言 前几天的文章中,我们已经把使用 pdm 的项目用 docker 搞定了,那么下一步就是把完整的 DjangoStarter v3 版本用 docker 部署. 现在不像之前那么简单直接一把梭了, ...

  9. Meissel_Lehmer模板

    复杂度 \(O(n^\frac 23)\),计算 \(1\sim n\) 的素数个数 #define div(a, b) (1.0 * (a) / (b)) #define half(x) (((x) ...

  10. [nRF24L01+] 3. Radio Control 无线电控制

    3. Radio Control 无线电控制 nRF24L01+可以配置为:power down, standby, Rx/Tx mode 3.1. 无线控制状态图 当VDD电压大于1.9V时,进入上 ...