【鸿蒙生态共建】鸿蒙6适配-API变更与兼容(3.UI交互能力篇)-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利

127 阅读5分钟

HarmonyOS开发者版本6.0.0(API 20)Release(鸿蒙6) 在2005年9月25日正式发布。相对于HarmonyOS 5.0版本增加了多项新能力及对已有能力的优化。同时也有部分API进行了变更。

本篇内容是《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》这本书整体内容的延续,是咱这本书读者的福利,内容以本书的示例作为基础,适配鸿蒙6过程中,所需要完成的调整。并将这些调整记录下来,本篇内容主要介绍与UI交互能力相关的鸿蒙6兼容适配。

对本书感兴趣的同学可以点击以下链接进行购买,及参加 我的班级(华为官方)共同学习

1: Error Message: Cannot find name 'LocationButton',系列API报错

该Error提示如下图所示,是一组API,在API15之后则不再维护,包括LocationButtonAttribute、LocationButton、LocationIconStyle、LocationDescription、LocationButtonOnClickResult等。

参考官方文档,LocationButton从API Version 15开始不再维护,在API 20中此接口已经删除,如下图所示。

如需要使用地理位置信息,推荐使用requestPermissionsFromUser获取权限。在本书的配套源码中,有关于requestPermissionsFromUser的使用,关于LocationButton的报错,也一同更新了到源码中。

2: 'showToast' has been deprecated.(promptAction.showToast)

在App中有需要向用户提示信息时, 常用promptAction.showToast传入提示信息,该组件的show方法从API 10开始支持,从API18开始废弃。

在使用该组件时,DevEco Studio 6编译会报警告'showToast' has been deprecated.如下图所示。

参考官方的文档,从API version 18开始废弃,且直接使用showToast可能导致UI上下文不明确的问题,建议使用UIContext中的getPromptAction获取PromptAction对象,再通过此对象调用替代方法showToast。

3: createAsset,To use this API, you need to apply for the permissions: ohos.permission.WRITE_IMAGEVIDEO

在ArkTS语言中,在对图片或视频资源进行存相册操作时,需要使用createAsset函数,但是该函数需要申请ohos.permission.WRITE_IMAGEVIDEO权限,否则在编译过程会报警告 To use this API, you need to apply for the permissions: ohos.permission.WRITE_IMAGEVIDEO,如下图所示。

如果没有申请权限,则在图片或视频资源保存时,会因为权限问题无法保存。但是,当吏用安全控件授权之后,再对图片或视频资源保存时,是可以保存成功的。可以参考文档说明,如下图。本书的第13章中,使用的是安全控件授权,不需要再单独申请权限,读者在看到此警告时,可以忽略。

   

从API version 12开始,可以通过使用UIContext中的getHostContext来明确UI的执行上下文。也就是说,如果App仅在HarmonyOS NEXT(API 12之上)运行,那么默认的使用getHostContext接口,就可以实现获取当前页面关联的Context对象。

那么对于getContext接口将要废弃如何修改呢,主要有两个方面:

  • 如果是在UI组件中使用的getContext接口,则可以使用this.getUIContext().getHostContext()
  • 如果是在非UI组件中使用的getContext接口,则可以先将this.getUIContext().getHostContext()存储在全局存储区中(例如使用AppStorage、全局管理类等方式将该值存储),在需要时获取该值即可。在整个HAP中该值是唯一的,可以在第一个页面开始加载时存储。

4: TextPickerDialog.show'show' has been deprecated.

在UI界面研发过程中,需要实现文本滑动选择时,可使用TextPickerDialog,通增show方法传入参数,并获取用户选择的文本信息。该组件的show方法从API 10开始支持,从API18开始废弃。

在使用该组件时,DevEco Studio 6编译会报警告'show' has been deprecated.如下图所示。

参考官方的文档,建议通过使用UIContext中的showTextPickerDialog来替代。如下图所示。

5: DatePickerDialog.show'show' has been deprecated.

在UI界面研发过程中,需要实现日期选择时,可使用DatePickerDialog,通增show方法传入参数,并获取用户选择的文本信息。该组件的show方法从API 10开始支持,从API18开始废弃。

在使用该组件时,DevEco Studio 6编译会报警告'show' has been deprecated.如下图所示。

参考官方的文档,建议使用UIContext中的showDatePickerDialog替代。如下图所示。

6: TimePickerDialog.show'show' has been deprecated.

在UI界面研发过程中,需要实现时间选择时,可使用TimePickerDialog,通增show方法传入参数,并获取用户选择的文本信息。该组件的show方法从API 10开始支持,从API18开始废弃。

在使用该组件时,DevEco Studio 6编译会报警告'show' has been deprecated.如下图所示。

参考官方的文档,建议使用UIContext中的showTimePickerDialog替代。如下图所示。

总结:

本文为《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者提供鸿蒙6.0适配指南,重点解析了UI交互相关的API变更与优化方案。针对开发者在升级过程中常见的6类问题(如LocationButton废弃、showToast弃用、权限申请等),提供了具体的适配建议和替代方案。全书配套源码已同步更新,帮助开发者顺利完成HarmonyOS 6.0的兼容适配工作。