更多信息请访问:https://harmonyos.51cto.com,与华为官方共同打造的鸿蒙技术社区API差异报告受到了众多开发者的青睐。很多开发者表示希望看到一份完整的API差异说明,这一次,就在这里,让我们全面了解这份API差异报告。首先是版本信息说明。HarmonyOSSDK2.2.0.1(APIVersion6Beta1)现已发布。与上一版本HarmonyOSSDK2.1.1.21(APIVersion5)相比,SDK变化主要体现在两个方面,即JavaAPI变化(API6->API5)和JSAPI变化(API6->API5).现在让我们正式进入差异报告解读。一、JSAPI变更(API6->API5)1、新增提供功能子系统的APIJSAPIVersion6与JSAPIVersion5相比,新增API如下表:2、变更差异JSAPIVersion6、增加了更多原子服务相关的接口。本文列出了一些新接口。更详细的更新请访问官网链接:https://developer.harmonyos.com/cn/docs/documentation/doc-releases/apidiff-js-api-6-phone-component-0000001170697425(1)JSUIframework子系统增加了media、canvas和grid组件,如下表:(2)pan-sensor子系统增加了方位传感器和陀螺仪传感器的订阅和取消订阅接口,如下表:(3)文件子系统原有文件存储的“@system.file”接口从APIVersion6开始不再维护,推荐使用新接口'@ohos.fileio'进行文件管理。新增接口如下:(4)原有网络子系统从APIVersion6开始不再维护数据请求'@system.fetch',推荐使用新接口'@ohos.net.http'发起http数据请求。新增接口如下:(5)分布式管理子系统原有的数据存储'@system.storage'从APIVersion6开始不再维护,推荐使用新接口'@ohos.data。存储”用于数据管理。新增接口如下:2.JavaAPI变化(API6->API5)1.基础能力增强(1)Intent增加MissionTop启动flagIntent增加字段FLAG_ABILITY_MISSION_TOP,用于应用通过missionTop模式启动。如果launchability的现有实例已经位于任务堆栈的顶部,则该实例将被重用。否则,将创建一个新的能力实例。相关使用代码如下:Intentintent=newIntent();Operationoperation=newIntent.OperationBuilder().withDeviceId("").withBundleName("com.demoapp").withAbilityName("com.demoapp.XxxAbility").withFlags(意图.FLAG_ABILITY_MISSION_TOP);显示:StringACTION_EDIT_DATA="ability.intent.EDIT_DATA";StringACTION_SELECT="ability.intent.SELECT";StringACTION_SEND_DATA="ability.intent.SEND_DATA";StringACTION_SEND_MULTIPLE_DATA="ability.intent.SEND_MULTIPLE_DATA";StringACTION_SCAN_MEDIA_FILE="ability.CAN_MEDIA_FILE="ability.intent";StringACTION_VIEW_DATA="ability.intent.VIEW_DATA";StringENTITY_BROWSABLE="entity.system.browsable";当开发者需要打开文件相关应用时,在Intent中设置相应的Action。代码如下:Intentintent=newIntent();Operationoperation=newIntent.OperationBuilder().withDeviceId("").withAction(IntentConstants.ACTION_EDIT_DATA).withEntities(IntentConstants.ENTITY_BROWSABLE).build();intent.setOperation(operation);startAbility(intent);(3)FA传输的新回调方法类ohos.aafwk。ability.continuation.IContinuationDeviceCallback下新增了两个方法,onConnected(ContinuationDeviceInfodeviceInfo)和onDisconnected(StringdeviceId)用于在FA主动传输时在设备列表中选择设备的回调中添加设备名称参数,允许应用程序区分流通中的特定设备。其中,ContinuationDeviceInfo包含deviceId、deviceType、deviceName(新增)字段,开发者可以根据需要获取。JAVAAPI6抛弃了原有的回调方法onDeviceConnectDone(StringdeviceId,StringdeviceType),onDeviceDisconnectDone(StringdeviceId);2.卡服务能力提升(1)实现卡服务克隆。因为没有卡片克隆功能,以前的卡片都是从旧设备迁移到新设备上的,系统默认创建一张新卡,原卡上携带的数据无法克隆到新设备上。本次更新克隆接口适配卡片管理服务FMS,实现卡片克隆。(2)获取卡片状态小易推荐是HarmonyOS2上的智能助手,主动推荐当下需要的服务和应用。在智能卡推荐中,当卡片状态未完成时,可能会向消费者推荐空白卡。卡片,对消费者来说毫无意义。本次版本更新,类ohos.aafwk.ability.Ability新增onAcquireFormState(Intent)方法,提供获取卡状态的功能,通过调用onAcquireFormState询问卡状态是否就绪。只有卡片状态为就绪时,才会显示在小义的推荐位置。(3)为之前的卡片刷新设置下一次卡片刷新时间,以30min为基础值,按照30*N(N=1,2,3,4...)设置更新频率。这不能满足资金、航班等部分应用的卡片刷新需求,因为应用希望在某个时间段内动态设置下一次卡片刷新时间。本次版本更新,在类ohos.aafwk.ability.Ability中增加了setFormNextRefreshTime(long,long)方法,用于设置卡片的下一次刷新时间,用于卡片动态定时刷新。设置的最小间隔为5分钟,最大为每天50次。卡管理服务根据提供者设置的时间更新定时器,当定时器超时时,触发卡应用的更新回调。3、新增沙箱文件共享(1)FileAbilityohos.data.file类新增FileAbility能力,提供在应用沙箱中共享文件的能力,用于在沙箱中共享文件。获取沙箱文件的过程如下:类FileAbility封装了获取文件信息的方法。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:myfileability_description","type":"data","visible":true"uri":"dataability://ohos.data.file.FileAbility","grantPermission":true}Step2配置转换关系:在hap包的resources/rawfile/目录下创建fileability.json配置文件,use用于配置File到Uri的转换关系,指定哪些文件目录可以用于共享。配置转换关系后,会将路径转换为对应的名称。fileability.json的配置文件如下所示:{"paths":[{"tag":"fileability-external-path","name":"external_storage_root","path":"."},{"tag":"fileability-files-path","name":"files-path","path":"."},{"tag":"fileability-cache-path","name":"cache-path","path":"."},{"tag":"fileability-external-files-path","name":"external_file_path","path":"."},{"tag":"fileability-外部缓存路径”,“名称”:“external_cache_path”,“路径”:“。”},{“标签”:“可归档性根路径”,“名称”:“根路径”,“路径”:""}]}Step3沙盒文件分享:发送旁调使用getUriViaFile()FilephotoFile=newFile(getFilesDir(),"test.jpg");Uriuri=FileAbility.getUriViaFile(getContext(),"/ohos.data.file.FileAbility",photoFile);Intentintent1=newIntent();intent1.addFlags(0x00000001);intent1.addFlags(Intent.FLAG_NOT_OHOS_COMPONENT);intent1.setUriAndType(uri,"image/png");ElementNameelement=newElementName("","com.os1devp.intentapplication2","com.os1devp.intentapplication2.MainAbility");intent1.setElement(元素);startAbility(intent1);接收方调用DataAbility.open()获取文件句柄并处理沙箱文件:DataAbilityHelperhelper=DataAbilityHelper.creator(getContext());UriintentUri=intent.getOperation().getUri();FileDescriptorfs=helper.openFile(intentUri,"r");4.添加后台ProxyReminder(1)原方案如下图所示。原方案中使用Timer类实现定时提醒,需要在后台启动或唤醒应用,导致后台应用占用系统资源,影响前台应用的用户体验(2)改进方案能否实现后台代理提醒功能?所有提醒服务统一托管,应用卡顿或退出后,倒计时、日历、闹钟等系统提醒仍可进行。现在,他来了!如下图所示,开发者可以使用后台代理提醒的能力。在通过后台代理实现定时提醒的同时,实现了对后台应用的严格管控,减少了后台应用被拉起或唤醒的次数,从而节省了系统资源开销。(3)新内容如何实现后台代理功能?本次API更新,在ohos.event.notification包中新增了5个基础类,包括ReminderHelper、ReminderRequest、ReminderRequestTimer、ReminderRequestCalendar、ReminderRequestAlarm,基础类之间的关系如下图所示:ReminderHelper类封装了基础类代理通知的操作,包括发布定时提醒通知、注册需要用于提醒的实例、取消指定的提醒通知、取消当前应用设置的所有提醒。ReminderRequest类封装了通知提醒的基本方法,包括获取设置的提醒时长、获取设置的延迟提醒次数、获取提醒的标题等。ReminderRequestTimer类,提醒类的子类,用于闹钟提醒。ReminderRequestCalendar类,提醒类的子类,用于日历提醒。ReminderRequestAlarm类,提醒类的子类,用于倒计时提醒。5.支持continue无需安装即可拉起FA。在之前的跨设备迁移过程中,需要在两台设备上都安装相应的FA,否则无法跨设备迁移。本次更新增强了continueAbility接口功能。当指定deviceId时,如果检测到远端设备没有安装FA,远端设备的框架会自动查询HAG,下载安装FA并拉起。另外在IAbilityContinuation接口中增加了一个异常回调函数和错误码,如下:publicinterfaceIAbilityContinuation{intERR_ABILITY_QUERY_FAILED=-2;intERR_CONTINUE_TIMEOUT=-8;intERR_DEVICE_OFFLINE=-9;intERR_INSTALL_FREE_NOT_SUPPORTED=-4;intERR_NETBORK_UNAVAITERNI=3VAIDALATER_6;5;intERR_REMOTE_DEVICE_INCOMPATIBLE=-7;intERR_UNKNOWN=-1;intSUCCESS=0;defaultvoidonFailedContinuation(terrorCode){thrownewRuntimeException("Stub!");}}6.其他新特性(1)StartAbility()类ohos方法startAbility(Intent,.aafwk.ability.Ability中增加IabilityStartCallback)回调参数,用于对端Ability免安装启动成功后回调开发者。避免了对端设备启动过程中Ability的盲目等待。(2)getIconId(),getLabelId()类ohos.bundle.ApplicationInfo新增getIconId()和getLabelId()两个方法,用于在未配置feature时获取应用的标签和图标与家庭能力。Label是应用的标签,icon是应用的图标。更多信息请访问:Harmonyos.51cto.com,与华为官方合作打造的鸿蒙技术社区
