Skip to content
Menu
(◍ ´꒳` ◍)

  • Blog
  • Front Page
(◍ ´꒳` ◍)

鸿蒙os05( abilities 对象)

By admin on 2021年8月4日

这个比较多慢慢写,先去休息累啊,Android开发也要看看

abilities 示例:

“abilities”: {

“name”: “.MainAbility”,

#表示Ability名称。取值可采用反向域名方式表 示,由包名和类名组成,如 com.example.myapplication.MainAbility;也 可采用.开头的类名方式表示,如.MainAbility。 该标签仅适用于手机、平板、智慧屏、车机、 智能穿戴。说明在使用DevEco Studio新建项目 时,默认生成首个Ability的配置,包括生成 MainAbility.java文件,及config.json中 MainAbility的配置。如使用其他IDE工具,可自 定义名称

“description”: “himusic main ability”,##

#表示对Ability的描述。取值可以是描述性内容, 也可以是对描述性内容的资源索引,以支持多 语言。 字符串

“icon”: “$media:ic_launcher”,##这边应该是Launcher icon(启动图标) 应该是打开音乐的启动图标

#表示Ability图标资源文件的索引。取值示例: $media:ability_icon。如果在该Ability的skills属 性中,actions的取值包含 action.system.home,entities取值中包含 entity.system.home,则该Ability的icon将同时 作为应用的icon。如果存在多个符合条件的 Ability,则取位置靠前的Ability的icon作为应用 的icon。说明应用的icon和label是用户可感知 配置项,需要区别于当前所有已有的应用icon或label(至少有一个不同)。

“label”: “HiMusic”,#对用户显示的名称”HiMusic”

#表示Ability对用户显示的名称。取值可以是 Ability名称,也可以是对该名称的资源索引,以 支持多语言。如果在该#Ability的skills属性中, actions的取值包含 action.system.home, entities取值中包含entity.system.home,则该 Ability的label将同时作为应用的label。如果存 在多个符合条件的Ability,则取位置靠前的 Ability的label作为应用的label。说明应用的 icon和label是用户可感知配置项,需要区别于 当前所有已有的应用icon或label(至少有一个 不同)。

“launchType”: “standard”

#启动类型 标准实例

#表示Ability的启动模式,支持standard和 singleton两种模式:(标准实例)standard:表示该Ability 可以有多实例。standard模式适用于大多数应 用场景。(独立实例)singleton:表示该Ability只可以有一 个实例。例如,具有全局唯一性的呼叫来电界 面即采用singleton模式。

“orientation”: “unspecified”,

#orientation(方向) unspecified(未指明)

“permissions”: [ ],##permissions(许可)

“visible”: true,

#表示Ability是否可以被其他应用调用。true:可 以被其他应用调用。false:不能被其他应用调 用。

“skills”: [ {

#表示Ability能够接收的Intent的特征

#Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。还可以通过intent.putExtra()等方法携带数据。

对于两种intent的方式,有如下的特点和区别:

  • 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用Intent.setComponent()\Intent.setClassName()或Intent.setClass()方法 或者在new Intent(A.this,B.class)指明需要转向到的Activity ,显式意图明确指定了要激活的组件是哪个组件,一般是在相同的应用程序内部实现的。
  • 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。一般是用于在不同应用程序之间。

我们在编写需要被隐式调用的界面的清单文件时,会指定一个Intent Filter(意图过滤器),它是用来匹配隐式Intent的,当一个意图对象被一个意图过滤器进行匹配测试时,会有三个方面会被参考到:

  • 动作(action)
  • 数据(data)
  • 类别(catagory)

动作测试(Action test)

一个Intent对象只能指定一个动作名称,而一个filter可能列举多个动作名称。如果意图对象或过滤器没有指定任何动作,结果将如下:

  • 如果filter没有指定任何动作,那么将阻塞所有的意图,因此所有的意图都会测试失败。没有意图能够通过这个过滤器。
  • 另一方面,只要过滤器包含至少一个动作,一个没有指定动作的意图对象自动通过这个测试

类别测试(Category test)
对于一个能够通过类别匹配测试的intent,该intent对象中的类别必须匹配filter中的类别。这个filter可以列举另外的类别,但它不能遗漏在这个intent中的任何类别。
原则上一个没有类别的intent对象应该总能够通过匹配测试,而不管filter里有什么。大部分情况下这个是对的。但有一个例外,Android把所有传给startActivity()的隐式意图当作他们包含至少一个类别:”android.intent.category.DEFAULT” (CATEGORY_DEFAULT常量)。 因此,想要接收隐式意图的活动必须在它们的意图过滤器中包含”android.intent.category.DEFAULT”。
数据测试(Data test)
当一个intent对象中的URI被用来和一个过滤器中的URI比较时,比较的是URI的各个组成部分。例如,如果过滤器仅指定了一个scheme,所有该scheme的URIs都能够和这个过滤器相匹配;如果过滤器指定了一个scheme、主机名但没有路经部分,所有具有相同scheme和主机名的URIs都可以和这个过滤器相匹配,而不管它们的路经;如果过滤器指定了一个scheme、主机名和路经,只有具有相同scheme、主机名和路经的URIs才可以和这个过滤器相匹配。当然,一个过滤器中的路径规格可以包含通配符,这样只需要部分匹配即可。

关于效率问题

显式意图有点是效率高,系统直接精确定位要启用的组件,但耦合度也高,如果通过这种方式调用一些系统组件的话,容易因为版本更新,类名、包名、包结构变化等原因导致程序崩溃。

而隐式意图能够降低程序的耦合度,但由于每次意图执行的时候,系统都会搜索所有可用的intentfilter,来查看是否有匹配的内容,所以效率更低。所以具体的使用还要看具体的情况。

“actions”: [ “action.system.home” ],

#动态实例

“entities”: [ “entity.system.home” ] } ],

#entities独立实例

“configChanges”: [

#配置更改

“locale”, “layout”,”

AndroidManifest.xml中配置了configChanges locale属性

android:configChanges="locale"

增加了一个layoutDirection属性,当改变语言设置后,该属性也会成newConfig中的一个mask位。所以ActivityManagerService(实际在ActivityStack)在决定是否重启Activity的时候总是判断为重启。
需要在android:configChanges 中同时添加locale和layoutDirection。

#就是在配置文件添加locale”, “layout”,属性

fontSize””orientation” ],

#表示该Ability的显示模式。该标签仅适用于 page类型的Ability。取值范围如下: unspecified:由系统自动判断显示方向。 landscape:横屏模式。portrait:竖屏模式。 followRecent:跟随栈中最近的应用。

“orientation“ 设备旋转,横向显示和竖向显示模式切换。
“fontScale“ 全局字体大小缩放发生改变

“type”: “page” },

{ “name”: “.PlayService”,

#播放服务

“description”: “himusic play ability”,

#描述 播放

“icon”: “$media:ic_launcher”,

“label”: “HiMusic”,

“launchType”: “standard”,

“orientation”: “unspecified”,

“visible”: false,

“skills”: [ {

“actions”: [ “action.play.music”,

“action.stop.music” ],

#开始和暂停播放

“entities”: [ “entity.audio” ] } ],

#音频实例

“type”: “service”,

“backgroundModes”: [ “audioPlayback” ] },

#表示后台服务的类型,可以为一个服务配置多 个后台服务类型。该标签仅适用于service类型 的Ability。取值范围如下:dataTransfer:通过 网络/对端设备进行数据下载、备份、分享、传 输等业务。audioPlayback:音频输出业务。 audioRecording:音频输入业务。 pictureInPicture:画中画、小窗口播放视频业 务。voip:音视频电话、VOIP业务。location: 定位、导航业务。bluetoothInteraction:蓝牙 扫描、连接、传输业务。wifiInteraction: WLAN扫描、连接、传输业务。screenFetch: 录屏、截屏业务。

“name”: “.UserADataAbility”,

“type”: “data”,

“uri”: “dataability://com.huawei.hiworld.himusic.UserADataAbility”,

#反向URI 反向域名

“visible”: true }

#可见

Category: 鸿蒙

文章导航

鸿蒙04(metaData)
鸿蒙os6(skills)

Related Posts

攻防01

8月 4, 2023
Read More

承认平庸-liunx iptables-iptables四表-filter表

3月 2, 2023
Read More

承认平庸-iptables高级-扩展动作-LOG-22

3月 3, 2023
Read More

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

近期文章

  • 实施002
  • 实施SQL001
  • 泛微oa001-字段
  • 硬件前端-海康威视摄像头
  • 使用Docker搭建Weblogic服务001

近期评论

    归档

    • 2023年10月
    • 2023年9月
    • 2023年8月
    • 2023年5月
    • 2023年4月
    • 2023年3月
    • 2021年11月
    • 2021年10月
    • 2021年9月
    • 2021年8月
    • 2021年5月

    分类

    • C
    • docker
    • iptable
    • ISIS
    • java
    • k8s
    • liunx
    • OpenCV py
    • ospf
    • solr
    • zabbix
    • 劳动法
    • 周杰伦
    • 格林法则
    • 等保
    • 鸿蒙

    其他操作

    • 登录
    • 条目feed
    • 评论feed
    • WordPress.org
    ©2025 (◍ ´꒳` ◍) | WordPress Theme by Superb WordPress Themes