mirror of
https://github.com/openharmony/ability_ability_runtime.git
synced 2026-08-24 22:21:36 -04:00
fix autostart app bug
Signed-off-by: tantingting <tantingting5@huawei.com>
This commit is contained in:
@@ -38,7 +38,7 @@ public:
|
||||
|
||||
int32_t DeleteAutoStartupData(const AutoStartupInfo &info);
|
||||
|
||||
int32_t DeleteAutoStartupData(const std::string &bundleName, int32_t uid);
|
||||
int32_t DeleteAutoStartupData(const std::string &bundleName, int32_t accessTokenId);
|
||||
|
||||
AutoStartupStatus QueryAutoStartupData(const AutoStartupInfo &info);
|
||||
|
||||
|
||||
@@ -81,10 +81,10 @@ public:
|
||||
/**
|
||||
* @brief Delete current bundleName auto start up data.
|
||||
* @param bundleName The current bundleName.
|
||||
* @param uid The uid.
|
||||
* @param accessTokenId The accessTokenId.
|
||||
* @return Returns ERR_OK on success, others on failure.
|
||||
*/
|
||||
int32_t DeleteAutoStartupData(const std::string &bundleName, int32_t uid);
|
||||
int32_t DeleteAutoStartupData(const std::string &bundleName, int32_t accessTokenId);
|
||||
|
||||
/**
|
||||
* @brief Check current bundleName auto start up data.
|
||||
|
||||
@@ -2212,6 +2212,7 @@ private:
|
||||
const int32_t oriValidUserId);
|
||||
|
||||
void InitInterceptor();
|
||||
void InitInterceptorForScreenUnlock();
|
||||
void InitPushTask();
|
||||
void InitDeepLinkReserve();
|
||||
void InitDefaultRecoveryList();
|
||||
|
||||
@@ -201,15 +201,8 @@ int32_t AbilityAutoStartupDataManager::DeleteAutoStartupData(const AutoStartupIn
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
int32_t AbilityAutoStartupDataManager::DeleteAutoStartupData(const std::string &bundleName, int32_t uid)
|
||||
int32_t AbilityAutoStartupDataManager::DeleteAutoStartupData(const std::string &bundleName, int32_t accessTokenId)
|
||||
{
|
||||
int32_t userId;
|
||||
if (DelayedSingleton<AppExecFwk::OsAccountManagerWrapper>::GetInstance()->
|
||||
GetOsAccountLocalIdFromUid(uid, userId) != ERR_OK) {
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "GetOsAccountLocalIdFromUid failed");
|
||||
return ERR_INVALID_VALUE;
|
||||
}
|
||||
uint32_t accessTokenId = Security::AccessToken::AccessTokenKit::GetHapTokenID(userId, bundleName, 0);
|
||||
auto accessTokenIdStr = std::to_string(accessTokenId);
|
||||
if (bundleName.empty() || accessTokenIdStr.empty()) {
|
||||
TAG_LOGW(AAFwkTag::AUTO_STARTUP, "Invalid value");
|
||||
|
||||
@@ -245,10 +245,11 @@ int32_t AbilityAutoStartupService::QueryAllAutoStartupApplicationsWithoutPermiss
|
||||
userId);
|
||||
}
|
||||
|
||||
int32_t AbilityAutoStartupService::DeleteAutoStartupData(const std::string &bundleName, const int32_t uid)
|
||||
int32_t AbilityAutoStartupService::DeleteAutoStartupData(const std::string &bundleName, const int32_t accessTokenId)
|
||||
{
|
||||
TAG_LOGD(AAFwkTag::AUTO_STARTUP, "called");
|
||||
return DelayedSingleton<AbilityAutoStartupDataManager>::GetInstance()->DeleteAutoStartupData(bundleName, uid);
|
||||
return DelayedSingleton<AbilityAutoStartupDataManager>::GetInstance()->DeleteAutoStartupData(
|
||||
bundleName, accessTokenId);
|
||||
}
|
||||
|
||||
int32_t AbilityAutoStartupService::CheckAutoStartupData(const std::string &bundleName, int32_t uid)
|
||||
@@ -285,7 +286,8 @@ int32_t AbilityAutoStartupService::CheckAutoStartupData(const std::string &bundl
|
||||
|
||||
if (!isFound) {
|
||||
TAG_LOGD(AAFwkTag::AUTO_STARTUP, "Current bundleName not found");
|
||||
return DelayedSingleton<AbilityAutoStartupDataManager>::GetInstance()->DeleteAutoStartupData(bundleName, uid);
|
||||
return DelayedSingleton<AbilityAutoStartupDataManager>::GetInstance()->DeleteAutoStartupData(bundleName,
|
||||
tokenId);
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ void AbilityBundleEventCallback::OnReceiveEvent(const EventFwk::CommonEventData
|
||||
TAG_LOGE(AAFwkTag::ABILITYMGR, "OnReceiveEvent failed, abilityAutoStartupService is nullptr");
|
||||
return;
|
||||
}
|
||||
abilityAutoStartupService_->DeleteAutoStartupData(bundleName, uid);
|
||||
abilityAutoStartupService_->DeleteAutoStartupData(bundleName, tokenId);
|
||||
} else if (action == EventFwk::CommonEventSupport::COMMON_EVENT_PACKAGE_ADDED) {
|
||||
// install or uninstall module/bundle
|
||||
HandleUpdatedModuleInfo(bundleName, uid);
|
||||
|
||||
@@ -138,6 +138,7 @@ constexpr char SHARE_PICKER_DIALOG_DEFAULY_ABILITY_NAME[] = "PickerDialog";
|
||||
constexpr char TOKEN_KEY[] = "ohos.ability.params.token";
|
||||
// Developer mode param
|
||||
constexpr char DEVELOPER_MODE_STATE[] = "const.security.developermode.state";
|
||||
constexpr char PRODUCT_APPBOOT_SETTING_ENABLED[] = "const.product.appboot.setting.enabled";
|
||||
// Broker params key
|
||||
constexpr const char* KEY_VISIBLE_ID = "ohos.anco.param.visible";
|
||||
constexpr const char* START_ABILITY_TYPE = "ABILITY_INNER_START_WITH_ACCOUNT";
|
||||
@@ -375,6 +376,13 @@ void AbilityManagerService::InitInterceptor()
|
||||
}
|
||||
}
|
||||
|
||||
void AbilityManagerService::InitInterceptorForScreenUnlock()
|
||||
{
|
||||
if (interceptorExecuter_) {
|
||||
interceptorExecuter_->AddInterceptor("ScreenUnlock", std::make_shared<ScreenUnlockInterceptor>());
|
||||
}
|
||||
}
|
||||
|
||||
void AbilityManagerService::InitPushTask()
|
||||
{
|
||||
if (taskHandler_ == nullptr) {
|
||||
@@ -7178,6 +7186,12 @@ int AbilityManagerService::LogoutUser(int32_t userId)
|
||||
return CHECK_PERMISSION_FAILED;
|
||||
}
|
||||
|
||||
// Lister screen unlock for auto startup apps.
|
||||
if (system::GetBoolParameter(PRODUCT_APPBOOT_SETTING_ENABLED, false)) {
|
||||
InitInterceptorForScreenUnlock();
|
||||
SubscribeScreenUnlockedEvent();
|
||||
}
|
||||
|
||||
if (userController_) {
|
||||
auto ret = userController_->LogoutUser(userId);
|
||||
TAG_LOGD(AAFwkTag::ABILITYMGR, "logout user return = %{public}d", ret);
|
||||
|
||||
+6
-6
@@ -345,8 +345,8 @@ HWTEST_F(AbilityAutoStartupDataManagerTest, DeleteAutoStartupData_bundleName_100
|
||||
GTEST_LOG_(INFO) << "DeleteAutoStartupData_bundleName_100 start";
|
||||
AbilityAutoStartupDataManager abilityAutoStartupDataManager;
|
||||
std::string bundleName = "";
|
||||
int32_t uid = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, uid);
|
||||
int32_t accessTokenId = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, accessTokenId);
|
||||
EXPECT_EQ(result, ERR_INVALID_VALUE);
|
||||
GTEST_LOG_(INFO) << "DeleteAutoStartupData_bundleName_100 end";
|
||||
}
|
||||
@@ -362,8 +362,8 @@ HWTEST_F(AbilityAutoStartupDataManagerTest, DeleteAutoStartupData_bundleName_200
|
||||
GTEST_LOG_(INFO) << "DeleteAutoStartupData_bundleName_200 start";
|
||||
AbilityAutoStartupDataManager abilityAutoStartupDataManager;
|
||||
std::string bundleName = "com.example.testbundle";
|
||||
int32_t uid = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, uid);
|
||||
int32_t accessTokenId = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, accessTokenId);
|
||||
EXPECT_EQ(result, ERR_OK);
|
||||
GTEST_LOG_(INFO) << "DeleteAutoStartupData_bundleName_200 end";
|
||||
}
|
||||
@@ -383,8 +383,8 @@ HWTEST_F(AbilityAutoStartupDataManagerTest, DeleteAutoStartupData_bundleName_300
|
||||
EXPECT_EQ(true, abilityAutoStartupDataManager.CheckKvStore());
|
||||
|
||||
std::string bundleName = "com.example.testbundle";
|
||||
int32_t uid = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, uid);
|
||||
int32_t accessTokenId = 0;
|
||||
auto result = abilityAutoStartupDataManager.DeleteAutoStartupData(bundleName, accessTokenId);
|
||||
EXPECT_EQ(result, ERR_OK);
|
||||
GTEST_LOG_(INFO) << "DeleteAutoStartupData_bundleName_300 end";
|
||||
}
|
||||
|
||||
+2
-2
@@ -257,8 +257,8 @@ HWTEST_F(AbilityAutoStartupServiceTest, DeleteAutoStartupData_001, TestSize.Leve
|
||||
GTEST_LOG_(INFO) << "AbilityAutoStartupServiceTest DeleteAutoStartupData_001 start";
|
||||
auto abilityAutoStartupService = std::make_shared<AbilityAutoStartupService>();
|
||||
std::string bundleName = AUTO_STARTUP_SERVICE_BUNDLENAME;
|
||||
int32_t uid = 0;
|
||||
auto result = abilityAutoStartupService->DeleteAutoStartupData(bundleName, uid);
|
||||
int32_t accessTokenId = 0;
|
||||
auto result = abilityAutoStartupService->DeleteAutoStartupData(bundleName, accessTokenId);
|
||||
EXPECT_EQ(result, ERR_OK);
|
||||
GTEST_LOG_(INFO) << "AbilityAutoStartupServiceTest DeleteAutoStartupData_001 end";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user