android学习笔记30——AndroidMainfest.xml

Manifest.xml文件的职责:
指定APP的包名.
声明四大组件, 以及启动方式.
指定APP运行的进程名称.
指定APP权限.
指定最小API版本.
指定需要连接的库.

Manifest.xml的格式:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />

<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>

<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>

<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>

<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>

<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>

<uses-library />

</application>
</manifest>

全部标签:
<action>
<activity>
<activity-alias> ==》activity-alias是android里为了重复使用Activity而设计的。
<application>
<category>
<data>
<grant-uri-permission>

<instrumentation>
==》Instrumentation和Activity有点类似,只不过Activity是需要一个界面的,而Instrumentation并不是这样的,我们可以将它理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类。

<intent-filter>
<manifest>
<meta-data>
<permission>
<permission-group>
<permission-tree>
<provider>
<receiver>
<service>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-library>
<uses-permission>
<uses-sdk>

Manifest.xml文件规则:
1.标签: 只有<manifest>和<application>是必须的, 它们俩只能被声明一次. 其余都是可选标签.
在同一级别的标签没有先后顺序的要求, 不过这里有一个例外:<activity-alias>必须紧跟<activity>.
2.属性: 理论上讲所有的属性都是可选的. 除了<application>标签外, 其他标签的属性都以android:前缀开头.
3.声明类名: 很多标签都对应一个Java的对象, 包括<application>以及四大组件.
Android规定使用name属性来为标签指定一个Java类。

比如下面是为一个Service指定类名:
<manifest . . . >
<application . . . >
<service android:name="com.example.project.SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
如果类所在名跟包名一样, 则可以简写成一个”.”, 比如:
<manifest package="com.example.project" . . . >
<application . . . >
<service android:name=".SecretService" . . . >
. . .
</service>
. . .
</application>
</manifest>
启动一个组件的时候, Android会创建一个被指定的子类的实例, 如果没指定的话, 那么Android会创建一个组件基类的实例.

4.单个属性多个值: 有些属性可以接收多个值, 通常我们会这样使用重复的属性:
<intent-filter . . . >
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.INSERT" />
<action android:name="android.intent.action.DELETE" />
. . .
</intent-filter>

5.引用资源: 有些属性值需要我们引用资源文件, 跟之前描述资源文件的用法一样,
只需要使用@[package:]type:name格式来引用资源即可:<activity android:icon="@drawable/smallPic" . . . >

6.使用字符串: 当属性值是字符串的时候, 使用转义字符必须加”\\”, 比如”\\n”用于换行, “\\uxxxx”用于Unicode

Manifest.xml的文件特性:
1.Intent Filters:
Intent是启动Android组件的重要工具,Intent意为”意图”, 是启动组件的”信使”, 它包括需要传送的数据(data), 处理action的组件的种类(category)和其它的相关说明. Android根据Intent来启动一个对应的组件, 然后将Intent传递给它.
每个组件可以包含多个<Intentfilter>, 它告诉Android自己想要接收的Intent长啥样. 当一个Intent明确指定了组件名称的时候(显示启动activity), Intent filter就不再发挥作用. 但是对于不指定名字的Intent(隐式启动activity),那么它只能启动符合的Intent filter的组件.

2.图标和标签:
很多标签都有图标(icon)和标签(label)属性, 它们分别指定了小图标和文字标签给用户. 有些还支持更长的description属性可以显示更长的文字信息. 如果一个标签包含了icon和label属性, 那么它们会成为子标签的默认属性. 所以只要设置了<application>的icon和label属性, 那么它们会成为application内所有组件的默认icon和label属性.

3.权限(permission): 权限是限制APP访问指定数据的约束性标签. 它用来指定APP拥有的权限. 是一串字符串, 如:
android.permission.CALL_EMERGENCY_NUMBERS ==>拨打紧急号码
android.permission.READ_OWNER_DATA ==>允许程序读取所有者的数据
android.permission.SET_WALLPAPER ==>设置壁纸
android.permission.DEVICE_POWER ==>设备电源权限
上述四个分别对应拨打紧急号码, 允许程序读取所有者的数据, 设置壁纸, 设备电源权限. 如果APP想访问某个被permission保护的权限, 那么必须用<user-permission>标签申请该权限. 在安装的时候, 系统将会检查这些权限, 并且将敏感权限提示给用户,由用户决定是否安装.
一款APP也可以通过权限管理来保护自己的组件, 可以使用Android提供的permissions(在android.Manifest.permission中列出), 也可以使用其它APP定义的permission,还可以自己定义.

定义一个permission的代码如下:
<manifest . . . >
<permission android:name="com.example.project.DEBIT_ACCT" . . . />
<uses-permission android:name="com.example.project.DEBIT_ACCT" />
. . .
<application . . .>
<activity android:name="com.example.project.FreneticActivity"
android:permission="com.example.project.DEBIT_ACCT"
. . . >
. . .
</activity>
</application>
</manifest>
这里需要注意的是:
所有需要访问被DEBIT_ACCT保护的Activity的组件, 都得使用<user-permission>来声明该权限, 就算在自己的APP内部也是如此.
<permission-tree>标签用于为同一组permission声明命名空间.<permission-group>则为一组permission定义一个label. 它只影响权限向用户展示的方式. <permission-group>仅仅用于给出一个组的名字, 并不指定权限是如何分组的.决定permission如何分组的是<permission>中的permissionGroup属性.

4.库(Libraries):
每个Android APP都会与Android默认的基础库连接, 包括基础的类, 比如Activity, Service, Intent, Button, View等. 然而有些时候我们也需要为我们的APP连接外部的库, 这些库需要<uses-library>标签指定.

 

转载于:https://www.cnblogs.com/YYkun/p/5833182.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华三交换机ping大包命令_华三交换机常用命令

1、查看全部端口的配置display current-configurationdisplay current-configuration interfacedis cu int2、查看指定端口的配置display current-configuration interface 或interface 进入端口配置模式display this 查看当前端口生效配置其中int-type和int-number为端口…

Vue3 高级语法(二)—— 自定义指令、Teleport、Vue插件

一、认识自定义指令 在Vue的模板语法中我们学习过各种各样的指令&#xff1a;v-show、v-for、v-model等等&#xff0c;除了使用这些指令之外&#xff0c;Vue也允许我们来自定义自己的指令。 注意&#xff1a;在Vue中&#xff0c;代码的复用和抽象主要还是通过组件&#xff1b;通…

自己封装的一个原生JS拖动方法。

代码&#xff1a; 1 function drag(t,p){2 3 var point p || null,4 target t || null,5 resultX 0,6 resultY 0;7 8 (!point)? point target : ; //如果没有拖动点&#xff0c;则拖动点默认为整个别拖动元素9 10 function getPos(…

nvidia的jetson系列的方案_NVIDIA Jetson Xavier NX开发者套件主要应用于自主机器边缘计算产品系列...

NVIDIA副总裁&#xff0c;边缘计算业务总经理Deepu Talla表示&#xff1a;“NVIDIA已在多个行业中创建并优化了大量AI软件。如今&#xff0c;有了云原生技术的加持&#xff0c;我们在嵌入式和机器人领域的客户就能通过高性能、低功耗的Jetson系列产品&#xff0c;受益于软件的创…

Vue-Router4 学习笔记

一、URL的hash 前端路由是如何做到URL和内容进行映射呢&#xff1f;监听URL的改变。 URL的hash也就是锚点(#), 本质上是改变window.location的href属性&#xff1b; 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新&#xff1b; hash的优势就是兼容性更好&am…

转:VC中MessageBox的常见用法

一、关于MessageBox 消息框是个很常用的控件&#xff0c;属性比较多&#xff0c;本文列出了它的一些常用方法&#xff0c;及指出了它的一些应用场合。 1.MessageBox("这是一个最简单的消息框&#xff01;"); 2.MessageBox("这是一个有标题的…

python subprocess communicate_Python中的Subprocess模块

以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.我们能从Python官方文档里读到应该用subprocess 模块来运行系统命令.subprocess模块允许我们创建子进程,连接他们的输入/输出/错误管道&#xff0c;还有获得返回值。subprocess模块打算来…

Vuex4学习笔记

一、Vuex的状态管理 二、Vuex的安装 我们这里使用的是vuex4.x&#xff0c;安装的时候需要添加 next 指定版本&#xff1b; npm install vuexnext三、创建Store 每一个Vuex应用的核心就是store&#xff08;仓库&#xff09;&#xff1a; store本质上是一个容器&#xff0c;它…

在局域网搭建一个带 web 操作页面的 git 版本服务器 - Gitlab

以下内容为本人的著作&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/Br0ETd_aNffEZoTAba03Bw 最近到了新团队&#xff0c;只有几部新电脑&#xff0c;然后啥也没有了。老江说需要一个管理工程代码的 git 版本服务器&…

div中iframe高度自适应问题

网页分为上、中、下三部分&#xff0c;上、下高度固定中间高度自适应&#xff1b;中间分为左、右两部分&#xff0c;左边宽度固定&#xff0c;右边宽度自适应。现在右侧div是宽度和高度都是自适应&#xff0c;右侧div里有个IFrame&#xff0c;想让IFrame自适应外部div的宽度和高…

python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份

#coding:utf-8importloggingfrom logging.handlers importRotatingFileHandler # 按文件大小滚动备份import colorlog #控制台日志输入颜色importtimeimportdatetimeimportoscur_path os.path.dirname(os.path.realpath(__file__)) #log_path是存放日志的路径log_path os.path…

JS高级——手写call()、apply()、bind()

0、call、apply、bind的区别 bind&#xff0c;call&#xff0c;apply的作用都是用来改变this指向的 call方法 call方法的第一个参数是this的指向 后面传入的是一个参数列表&#xff08;注意和apply传参的区别&#xff09;。当一个参数为null或undefined的时候&#xff0c;函数中…

ubyntu 链接mysql_ubuntu mysql远程连接

ubuntu mysql远程连接http://blog.csdn.net/helen_shw/archive/2010/01/22/5224524.aspxkikikiki-desktop:/etc/apache2mysql error number 2003Cant connect to MySQL server xxx.xxx.xxx.xxx (10061)在ubuntu 9.04中默认安装了mysql&#xff0c;默认只能本地访问&#xff0c;…

js文章QQ空间分享

<!--示例一--> <div id"ckepop" classfeixiangjias> <a href"javascript:" class"jiathis jiathis_txt jtico jtico_jiathis" target"_blank">分享到&#xff1a;</a> <a class"jiathis_button_qzo…

JS高级——深入剖析函数中的this指向问题

一、this到底指向什么呢&#xff1f; 我们先说一个最简单的&#xff0c;this在全局作用域下指向什么&#xff1f; 这个问题非常容易回答&#xff0c;在浏览器中测试就是指向window 但是&#xff0c;开发中很少直接在全局作用于下去使用this&#xff0c;通常都是在函数中使用…

日志测试法

/*** 写入日志*/ function write2log($content,$filenamelog) {$myfile fopen($filename.".txt", "a") or die("Unable to open file!");$txt date(Y-m-d H:i:s)."\t".$content."\r\n";fwrite($myfile, $txt);fclose($myf…

JS高级——arguments参数详解

一、认识arguments arguments 是一个 对应于 传递函数的参数 的 类数组(array-like)对象。 array-like意味着它不是一个数组类型&#xff0c;而是一个对象类型&#xff1a; 但是它却拥有数组的一些特性&#xff0c;比如说length&#xff0c;比如可以通过index索引来访问&…

php 函数有命名空间吗_解析 ThinkPHP 的命名空间

php中文网最新课程每日17点准时技术干货分享大家都知道由于PHP语法里不支持函数重载机制&#xff0c;如果一个应用里有两个同名的方法&#xff0c;怎么办呢&#xff1f;在Yii 框架为了避免名字重复引起问题&#xff0c;全部的类前边都有 C 字样&#xff0c;而在ThinkPHP里就引入…

JS高级——纯函数、柯里化(手写自动柯里化函数)、组合函数(手写自动组合函数)

一、理解JavaScript纯函数 函数式编程中有一个非常重要的概念叫纯函数&#xff0c;JavaScript符合函数式编程的范式&#xff0c;所以也有纯函数的概念&#xff1b; 在react开发中纯函数是被多次提及的&#xff1b;比如react中组件就被要求像是一个纯函数&#xff08;为什么是…

(五)uboot移植补基础之shell

1、shell介绍&#xff1a;shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面&#xff0c;可以说它是人机交互的一种方式。(2)我们可以使用shell和操作系统、uboot等软件系统进行交互。具体来说就是我们通过shell给软件系统输入命令然后回车执…