From 401cade6f7561a8fa173ece7fc4f0b0b51c84a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A1=A2?= Date: Tue, 1 Aug 2023 02:36:29 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=81=A2=E5=A4=8D=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=EF=BC=8C=E8=B7=AF=E5=BE=84=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王桢 --- frameworks/native/backup_ext/include/ext_backup.h | 2 ++ frameworks/native/backup_ext/src/ext_backup.cpp | 12 ++++++++++-- frameworks/native/backup_ext/src/ext_extension.cpp | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/frameworks/native/backup_ext/include/ext_backup.h b/frameworks/native/backup_ext/include/ext_backup.h index 2b2ce8740..7940adda9 100644 --- a/frameworks/native/backup_ext/include/ext_backup.h +++ b/frameworks/native/backup_ext/include/ext_backup.h @@ -127,6 +127,8 @@ public: */ virtual ErrCode OnRestore(void); + bool WasFromSpeicalVersion(void); + public: ExtBackup() = default; ~ExtBackup() override = default; diff --git a/frameworks/native/backup_ext/src/ext_backup.cpp b/frameworks/native/backup_ext/src/ext_backup.cpp index 30ca48335..568c9309e 100644 --- a/frameworks/native/backup_ext/src/ext_backup.cpp +++ b/frameworks/native/backup_ext/src/ext_backup.cpp @@ -173,8 +173,8 @@ sptr ExtBackup::OnConnect(const AAFwk::Want &want) // async do restore. if (extAction_ == BConstants::ExtensionAction::RESTORE && - restoreType_ == RestoreTypeEnum::RESTORE_DATA_READDY && appVersionCode_ == 0 && - appVersionStr_ == "0.0.0.0") { + restoreType_ == RestoreTypeEnum::RESTORE_DATA_READDY && + WasFromSpeicalVersion()) { HILOGI("Restore directly when upgrading."); remoteObject->AsyncTaskRestoreForUpgrade(); } @@ -209,6 +209,14 @@ void ExtBackup::OnDisconnect(const AAFwk::Want &want) } } +bool ExtBackup::WasFromSpeicalVersion(void) +{ + if (appVersionCode_ == 0 && appVersionStr_ == "0.0.0.0") { + return true; + } + return false; +} + ErrCode ExtBackup::OnBackup(void) { HILOGI("BackupExtensionAbility(base) OnBackup."); diff --git a/frameworks/native/backup_ext/src/ext_extension.cpp b/frameworks/native/backup_ext/src/ext_extension.cpp index 8f43e3383..b4cfc3e31 100644 --- a/frameworks/native/backup_ext/src/ext_extension.cpp +++ b/frameworks/native/backup_ext/src/ext_extension.cpp @@ -333,7 +333,11 @@ int BackupExtExtension::HandleRestore(const string &fileName) string tarName = path + fileName; auto tarballFunc = BTarballFactory::Create("cmdline", tarName); - (tarballFunc->untar)("/"); + if (extension_->WasFromSpeicalVersion()) { + (tarballFunc->untar)(path); + } else { + (tarballFunc->untar)("/"); + } HILOGI("Application recovered successfully, package path is %{public}s", tarName.c_str()); return ERR_OK; -- Gitee