华为鸿蒙HarmonyOSAPIVersion6关键差异点官
感谢IT之家网友肖战割割的线索投递!
IT之家7月19日消息华为HarmonyOS官方表示,之前为各位开发者带来首份API差异报告,不少开发者还希望看到一份完整的API差异说明,现在华为官方发布了完整的API差异报告。
IT之家获悉,首先是版本信息说明。目前发布HarmonyOSSDK2。2。0。1(APIVersion6Beta1),相较上一版本HarmonyOSSDK2。1。1。21(APIVersion5),SDK的变更主要体现在两个方面,分别是JavaAPI变更(API6gt;API5)和JSAPI变更(API6gt;API5)。
下面是正式的差异报告解读。一、JSAPI变更(API6gt;API5)
1。新增提供功能子系统的API
相较于JSAPIVersion5,JSAPIVersion6新增API如下表所示:
2。变更差异
JSAPIVersion6,新增了较多原子化服务相关的接口,本文列举了部分新增接口。
更多详细的更新内容请访问官网链接:https:developer。harmonyos。comcndocsdocumentationdocreleasesapidiffjsapi6phonecomponent0000001170697425
(1)JSUI框架子系统
新增了媒体、画布、栅格组件,如下表所示:
(2)泛sensor子系统
新增了方向传感器及陀螺仪传感器的订阅、取消订阅接口,如下表所示:
(3)文件子系统
原文件存储system。file接口,从APIVersion6开始不再维护,推荐使用新接口ohos。fileio进行文件管理,新增部分接口如下表:
(4)网络子系统
原数据请求system。fetch,从APIVersion6开始不再维护,推荐使用新接口ohos。net。http发起http数据请求。新增部分接口如下表:
(5)分布式管理子系统
原数据存储system。storage,从APIVersion6开始不再维护,推荐使用新接口ohos。data。storage进行数据管理。新增部分接口如下表:
二、JavaAPI变更(API6gt;API5)
1。基础能力增强
(1)Intent新增MissionTop启动flag
Intent中新增了应用通过missionTop模式启动的字段FLAGABILITYMISSIONTOP。如果启动ability的现有实例已经位于任务堆栈的顶部,则将重用该实例。否则,将创建新的ability实例。相关使用代码如下:IntentintentnewIntent();OperationoperationnewIntent。OperationBuilder()。withDeviceId()。withBundleName(com。demo)。withAbilityName(com。demo。XxxAbility)。withFlags(Intent。FLAGABILITYMISSIONTOP)。build();intent。setOperation(operation);startAbility(intent);
(2)Intent新增文件打开相关Action和Entity
Classohos。utils。IntentConstants中新增了Action和Entity,用于文件打开,如下所示:StringACTIONEDITDATAability。intent。EDITDATA;StringACTIONSELECTability。intent。SELECT;StringACTIONSENDDATAability。intent。SENDDATA;StringACTIONSENDMULTIPLEDATAability。intent。SENDMULTIPLEDATA;StringACTIONSCANMEDIAFILEability。intent。SCANMEDIAFILE;StringACTIONVIEWDATAability。intent。VIEWDATA;StringENTITYBROWSABLEentity。system。browsable;
开发者需要打开文件相关应用时,在Intent中设置对应Action,代码如下所示:IntentintentnewIntent();OperationoperationnewIntent。OperationBuilder()。withDeviceId()。withAction(IntentConstants。ACTIONEDITDATA)。withEntities(IntentConstants。ENTITYBROWSABLE)。build();intent。setOperation(operation);startAbility(intent);
(3)FA流转新增回调方法
Classohos。aafwk。ability。continuation。IContinuationDeviceCallback下新增了两个方法,onConnected(ContinuationDeviceInfodeviceInfo)和onDisconnected(StringdeviceId)。用于在FA主动流转时,在选择设备列表选择设备的回调中,新增设备名称参数,让应用区分流转的具体设备。其中ContinuationDeviceInfo中包含deviceId,deviceType,deviceName(新增)字段,开发者可以根据需要获取。
JAVAAPI6废弃原有回调方法onDeviceConnectDone(StringdeviceId,StringdeviceType),onDeviceDisconnectDone(StringdeviceId);
2。卡片服务能力强化
(1)实现卡片服务克隆
由于没有卡片克隆功能,以往将卡片从旧设备迁移到新设备时,系统默认创建一个新的卡片,卡片原本携带的数据将不能克隆到新设备。本次更新,为卡片管理服务FMS适配了克隆接口,实现卡片的克隆。
(2)获取卡片状态
小艺建议是HarmonyOS2上一款主动推荐当下所需服务和应用的智慧化助手,在卡片智能推荐中,当卡片的状态未完成之前,可能会给消费者推荐一张空白卡片,这样对于消费者来说毫无意义。本次版本更新,Classohos。aafwk。ability。Ability中新增了onAcquireFormState(Intent)方法,提供获取卡片状态功能,通过调用onAcquireFormState,询问卡片状态是否ready。只有卡片状态ready的情况下,才会显示在小艺建议推荐位。
(3)设置下一次卡片刷新时间
以往的卡片刷新,以30min作为一个基础值,按照30N(N1、2、3、4。。)来设置更新频率。这无法满足某些应用如基金、航班类的卡片刷新需求,因为应用希望能在某些时间段动态的设置下次卡片的刷新时间。
本次版本更新中,Classohos。aafwk。ability。Ability中新增了setFormNextRefreshTime(long,long)方法,设置下次卡片刷新时间,用于卡片动态定时刷新。设置的时间间隔最小是5min,每天最多设置50次。卡片管理服务根据提供方设置的时间更新定时器,定时器到点后,触发卡片应用的更新回调。
3。新增沙盒文件分享
(1)FileAbility
ohos。data。file类中新增了FileAbility能力,提供应用沙盒文件分享的能力,用于沙盒内文件的分享。获取沙盒文件的流程如下所示:
classFileAbility中封装了获取文件信息的方法。publicclassFileAbilityextendsAbility{publicFileAbility(){thrownewRuntimeException(Stub!);}publicvoidonStart(Intentintent){thrownewRuntimeException(Stub!);}publicStringgetType(Uriuri){thrownewRuntimeException(Stub!);}publicString〔〕getFileTypes(Uriuri,StringmimeTypeFilter){thrownewRuntimeException(Stub!);}publicFileDescriptoropenFile(Uriuri,Stringmode){thrownewRuntimeException(Stub!);}publicstaticUrigetUriViaFile(Contextcontext,StringAuthority,Filefile){thrownewRuntimeException(Stub!);}publicstaticFilegetFileViaUri(Uriuri){thrownewRuntimeException(Stub!);}}
(2)FileAbility开发步骤
Step1声明:
config。json中配置FileAbility类,指明ability类型为data,权限配置grantPermission:true。{name:ohos。data。file。FileAbility,icon:media:icon,description:string:myfileabilitydescription,type:data,visible:true,uri:dataability:ohos。data。file。FileAbility,grantPermission:true}
Step2配置转换关系:
在hap包内resourcesrawfile目录下新建fileability。json的配置文件,用于配置File到Uri转换关系,同时指明哪些文件目录可以用来分享。配置转换关系后,路径会转换为对应name。fileability。json的配置文件如下所示:{paths:〔{tag:fileabilityexternalpath,name:externalstorageroot,path:。},{tag:fileabilityfilespath,name:filespath,path:。},{tag:fileabilitycachepath,name:cachepath,path:。},{tag:fileabilityexternalfilespath,name:externalfilepath,path:。},{tag:fileabilityexternalcachepath,name:externalcachepath,path:。},{tag:fileabilityrootpath,name:rootpath,path:}〕}
Step3沙盒文件分享:
发送侧调用getUriViaFile()FilephotoFilenewFile(getFilesDir(),test。jpg);UriuriFileAbility。getUriViaFile(getContext(),ohos。data。file。FileAbility,photoFile);Intentintent1newIntent();intent1。addFlags(0x00000001);intent1。addFlags(Intent。FLAGNOTOHOSCOMPONENT);intent1。setUriAndType(uri,imagepng);ElementNameelementnewElementName(,com。os1devp。intentlication2,com。os1devp。intentlication2。MainAbility);intent1。setElement(element);startAbility(intent1);
接收侧调用DataAbility。open()获取文件句柄,处理沙盒文件:DataAbilityHelperhelperDataAbilityHelper。creator(getContext());UriintentUriintent。getOperation()。getUri();FileDescriptorfshelper。openFile(intentUri,r);
4。新增后台代理提醒
(1)原方案
如下图所示,在原来的方案中,通过Timer类实现定时提醒,需要在后台拉起或者唤醒应用,导致后台应用对系统资源的占用,影响前台应用的用户体验。
(2)改进方案
能不能实现一个后台代理提醒的功能?统一托管所有提醒业务,在应用冻结或者退出之后,仍可进行倒计时、日历、闹钟的系统提醒。现在,他来了!
如下图所示,开发者可以使用后台代理提醒的能力。通过后台代理实现定时提醒的同时,实现对后台应用的严格管控,减少后台应用被拉起或者唤醒次数,从而节省系统资源的开销。
(3)新增内容
如何实现后台代理功能?在本次API更新中,Packageohos。event。notification中新增了5大基础类,包括ReminderHelper、ReminderRequest、ReminderRequestTimer、ReminderRequestCalendar、ReminderRequestAlarm,基础类之间的关系如下图所示:
ClassReminderHelper中封装了代理通知基本操作,包括发布定时提醒类通知、注册提醒类需要使用的实例,取消指定的提醒类通知、取消当前应用设置的所有提醒。
ClassReminderRequest中封装了通知提醒的基本方法,包括获取设置的提醒时长、获取设置的延迟提醒次数、获取提醒的标题等。
ClassReminderRequestTimer,提醒类子类,用于闹钟类提醒。
ClassReminderRequestCalendar,提醒类子类,用于日历类提醒。
ClassReminderRequestAlarm,提醒类子类,用于倒计时提醒。
5。新增支持continueAbility免安装拉起FA
在以往的跨端迁移过程中,需要两台设备都安装对应的FA,否则将无法实现跨端迁移。本次更新,增强了continueAbility接口功能,在指定deviceId情况下,如果检测到远端设备未安装FA,远端设备的框架会自动向HAG查询、下载并安装FA并将其拉起。
此外,IAbilityContinuation接口中还新增了异常回调函数及错误码,如下所示:publicinterfaceIAbilityContinuation{intERRABILITYQUERYFAILED2;intERRCONTINUETIMEOUT8;intERRDEVICEOFFLINE9;intERRINSTALLFREENOTSUPPORTED4;intERRNETWORKUNAVAILABLE3;intERRPARAMETERINVALID6;intERRPERMISSIONDENIED5;intERRREMOTEDEVICEINCOMPATIBLE7;intERRUNKNOWN1;intSUCCESS0;defaultvoidonFailedContinuation(interrorCode){thrownewRuntimeException(Stub!);}}
6。其他新增功能
(1)StartAbility()
Classohos。aafwk。ability。Ability中新增了带有回调参数的方法startAbility(Intent,IAbilityStartCallback),作用是在对端Ability免安装成功拉起后,回调开发者。避免了Ability在对端设备启动过程中的盲目等待。
(2)getIconId()、getLabelId()
Classohos。bundle。ApplicationInfo中新增了getIconId()、getLabelId()两个方法,用于在feature没有配置HomeAbility的情况下,获取到应用的label和icon。Label是应用的标签,icon为应用的图标。三、总结
本次版本更新,新增内容较多,特别是JSAPI部分,新增了较多原子化服务相关的接口,感兴趣的用户可以点击,前往官网地址下载,升级尝鲜吧!
https:developer。harmonyos。comcndevelopdevecostudiodownloadbeta
6月份SUV销量榜出炉,途观L跌出前十,仅哈弗H6销量破两万据中国汽车流通协会汽车市场研究分会(乘联会)最新零售销量数据统计,6月份国内狭义乘用车市场销量达157。5万辆,同比下降5。1,环比下降3。1;16月份累计销量994。3万辆,……
以雪花为话题的作文异乡雪花飘编者按:在异乡的城市里,雪花密密地飞舞着,在人与人之间,在人与车之间,在人与建筑之间隔上了一层绣花的纱幔,朦胧美丽而梦幻。下面小编给大家带来《异乡雪花飘》。(一)清……
诗歌朗诵技巧(朗读的最基本技巧)诗歌朗诵技巧(朗读的最基本技巧)高考决胜必读2021050918:05:00你打开了高考决胜必读的第353篇文章高中语文诗歌鉴赏部分总是拿不到高分?今天教你如何通过努力和……
枋湖客运中心(厦门湖里区领导带队开展安全检查)枋湖客运中心(厦门湖里区领导带队开展安全检查)元旦、春节接踵而来湖里区绷紧安全弦全面排查隐患、筑牢安全生产防线全力以赴让群众过个安全祥和的幸福年春……
2021年过去一半,下半年房子真能等来降价潮吗?2021年过去一半,今天的房产市场调控政策大家有目共睹,2021年的第一季度调控政策达到120次,第二季度未完全统计,但至少预计可以达到300次左右。特别是从34月份开始,受银……
关于秋天的作文600字(精选)篇一:美丽的秋天来到了,农民伯伯喜欢她。秋天来到果园里,她用温柔的手抚摸了一下果树和梨,那红红的果子又大又红,把树枝都压弯了腰呢!那鸭梨又大又黄,咬一口,那美味的汁……
国家发改委罕见发声,这一次,居民电价真的要涨了吗?涨多少?6月24日,中国政府网发布了一条国家发改委对网民关于建议完善居民阶梯电价制度,鼓励城乡居民多用清洁的电力资源留言的回复。回复中称:与国际上其他国家相比,我国居民电价偏低,……
小学森林防火作文怎么写森林和人们的生产生活有着密切的联系,可就是森林却时刻面临着火的威胁!下面小编整理的小学森林防火作文,欢迎来参考!森林防火作文一森林火灾就是森林最危险的敌人,所以我们要把危……
到底交不交社保?每月存银行1000元,存够15年,能体面的养社保这个词我们都不陌生,但是其具体的用处很多人却都是一知半解,甚至对于每个月缴纳一定社保费用有些存疑:这对于自己以后究竟会有什么作用呢?什么是社保?今天小金就带大家……
社保卡余额怎么查询?社保卡余额怎么查询,现在一般都是在手机上通过掌上12333查询。不管是养老金账户还是医保账户每月发多少钱,累计余额等都一清二楚,但是不同账户的资金余额,需要登录不同的手机APP……
银行比较喜欢给哪些人办信用卡?首先,银行最喜欢的客户综合起来就是以下这几类。第一。具有良好的品德和潜质。第二,具有良好的经济能力和资产能力。第三。具有其他银行证明的实力。其次,人生中第一张信用卡基本上……
吻你蒙语(中文翻译蒙古语转换器)吻你蒙语(中文翻译蒙古语转换器)被称为天籁女声的蒙古族歌手阿木古楞,同时也是科尔沁民歌传承人。近几年异军突起的内蒙古女团阿伊萨组合,三个女孩分别是通俗、美声、民族三……