文档管理中心

应用升级过程代码开发注意事项

区分升级场景和克隆场景

开发者需要区分升级场景和克隆场景时,可以重写BackupExtensionAbility中的onRestoreEx方法,通过restoreInfo预留字段进行场景区分。onRestoreEx方法详细使用指导请参考:BackupExtensionAbility API参考

示例代码如下所示:

收起
自动换行
深色代码主题
复制
  1. import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';
  2. const TAG = `BackupExtensionAbility`;
  3. interface ErrorInfo {
  4. type: string,
  5. errorCode: number,
  6. errorInfo: string
  7. }
  8. interface DetailInfo {
  9. type: string,
  10. detail: string
  11. }
  12. export default class EntryBackupAbility extends BackupExtensionAbility {
  13. async onBackup() {
  14. console.info(TAG, 'onBackup ok');
  15. }
  16. async onRestoreEx(bundleVersion: BundleVersion, restoreInfo: string): Promise<string> {
  17. console.info(TAG, `onRestoreEx ok ${JSON.stringify(bundleVersion)}`);
  18. let errorInfo: ErrorInfo = {
  19. type: "ErrorInfo",
  20. errorCode: 0,
  21. errorInfo: "app diy error info"
  22. }
  23. if (bundleVersion.name.startsWith("0.0.0.0")){
  24. // 在此处实现终端设备从HarmonyOS 4.x到HarmonyOS NEXT的应用数据处理。
  25. // 涉及异步操作请进行同步等待
  26. console.info(TAG, `HarmonyOS to HarmonyOS NEXT scenario`);
  27. // 如果升级场景与克隆场景没有差异化数据处理诉求,此处可以忽略。
  28. if (this.IsOtaScenario(restoreInfo)) {
  29. // 在此处实现终端设备从HarmonyOS 4.x到HarmonyOS NEXT升级场景的特有数据处理。无特殊要求,此处可以忽略。
  30. console.info(TAG, `Ota Scenario`)
  31. } else {
  32. // 在此处实现终端设备从HarmonyOS 4.x到HarmonyOS NEXT克隆场景的特有数据处理。无特殊要求,此处可以忽略。
  33. console.info(TAG, `Clone Scenario`)
  34. }
  35. } else {
  36. // 在此处实现从HarmonyOS NEXT设备迁移到HarmonyOS NEXT设备后,应用数据的处理。无特殊要求,可以空实现。
  37. // 涉及异步操作请进行同步等待
  38. console.info(TAG, `Other scenario`);
  39. }
  40. return JSON.stringify(errorInfo);
  41. }
  42. /**
  43. * 判断是否是升级场景
  44. * @param restoreInfo 预留字段,应用恢复过程中需要的扩展参数
  45. * @returns 升级场景返回true,否则返回false
  46. */
  47. IsOtaScenario(restoreInfo: string): boolean {
  48. let details:Array<DetailInfo> = JSON.parse(restoreInfo);
  49. return details.some((detailInfo) => {
  50. // 设备从HarmonyOS 4.x升级到HarmonyOS NEXT/5.0.x场景判断条件
  51. return detailInfo.type == 'isSameDevice' && detailInfo.detail == 'true';
  52. });
  53. }
  54. }

公共目录文件URI继承

场景说明

应用在HarmonyOS 3.1 Release API 9及更低版本运行时,开发者可通过记录公共媒体库中文件的URI或者路径,用于后续的文件访问。 当终端设备从HarmonyOS升级到HarmonyOS NEXT后,公共媒体库中的文件会由系统整体搬迁至新位置,直接继承。导致应用记录的旧有URI或者路径不可使用。

为解决该问题,系统提供数据迁移公共目录文件继承方案,支持应用将记录的HarmonyOS公共媒体库文件URI或者路径转换为对应的HarmonyOS NEXT公共媒体库文件URI或者路径,并且返回对应文件类型。当应用需要在HarmonyOS NEXT中访问公共媒体库中的文件时,可以使用转换后的HarmonyOS NEXT公共媒体库文件URI或者路径,通过HarmonyOS NEXT提供的公共媒体库API进行授权访问。

代码实现

应用可以调用Scenario Fusion Kit的接口convertFileUris(),将记录的HarmonyOS公共媒体库文件URI或者路径转换为HarmonyOS NEXT可访问的URI或者路径,并获取到对应文件类型。其中媒体文件类型请参考继承媒体文件访问权限,其他类型文件可通过基础文件接口进行操作。convertFileUris()接口详细使用指导请参考:基于融合场景服务实现文件路径转换参考指导

说明

开发者可以在数据迁移的过程中,通过该接口将HarmonyOS公共媒体库文件URI或者路径转换为对应的HarmonyOS NEXT公共媒体库文件URI或者路径,并重新保存,便于后续使用。

在 指南 中进行搜索
请输入您想要搜索的关键词