diff --git a/display/entry/src/main/ets/pages/ConfirmDialog.ets b/display/entry/src/main/ets/pages/ConfirmDialog.ets index fd9971ee98a51958b7b4cdc1772f7326e13b21ab..91929ed7ae457925d91cf84a5c660908dab003a1 100644 --- a/display/entry/src/main/ets/pages/ConfirmDialog.ets +++ b/display/entry/src/main/ets/pages/ConfirmDialog.ets @@ -44,7 +44,7 @@ struct ConfirmCustomDialog { isPC: boolean = false; aboutToAppear() { - console.log(TAG + 'aboutToAppear execute PinCustomDialog') + console.log(TAG + 'aboutToAppear execute ConfirmCustomDialog') if (AppStorage.get('deviceName') != null) { this.peerDeviceName = AppStorage.get('deviceName') as string console.log('peerDeviceName is ' + this.peerDeviceName) @@ -87,7 +87,7 @@ struct ConfirmCustomDialog { } console.log('allow once' + ACTION_ALLOW_AUTH_ONCE) - this.setUserOperation(ACTION_ALLOW_AUTH_ONCE) + this.setUserOperation(ACTION_ALLOW_AUTH_ONCE); this.destruction() } @@ -99,7 +99,7 @@ struct ConfirmCustomDialog { } console.log('allow always' + ACTION_ALLOW_AUTH_ALWAYS) - this.setUserOperation(ACTION_ALLOW_AUTH_ALWAYS) + this.setUserOperation(ACTION_ALLOW_AUTH_ALWAYS); this.destruction() } @@ -109,9 +109,8 @@ struct ConfirmCustomDialog { console.log('createDeviceManager is null') return } - console.log('cancel' + ACTION_CANCEL_AUTH) - this.setUserOperation(ACTION_CANCEL_AUTH) + this.setUserOperation(ACTION_CANCEL_AUTH); this.destruction() } @@ -129,14 +128,7 @@ struct ConfirmCustomDialog { } destruction() { - if (dmClass != null) { - try { - dmClass.release(); - dmClass = null; - } catch (error) { - console.log('dmClass release failed') - } - } + console.log(TAG + 'ConfirmCustomDialog destruction') let session = AppStorage.get('ConfirmSession'); if (session) { session.terminateSelf(); @@ -342,6 +334,15 @@ struct dialogPlusPage { } destruction() { + console.log(TAG + 'dialogPlusPage destruction') + let session = AppStorage.get('ConfirmSession'); + if (session) { + session.terminateSelf(); + } + } + + aboutToDisappear() { + console.log(TAG + 'aboutToDisappear aboutToDisappear') if (dmClass != null) { try { dmClass.release(); @@ -350,10 +351,6 @@ struct dialogPlusPage { console.log('dmClass release failed') } } - let session = AppStorage.get('ConfirmSession'); - if (session) { - session.terminateSelf(); - } } build() { diff --git a/services/implementation/src/ability/standard/dm_dialog_manager.cpp b/services/implementation/src/ability/standard/dm_dialog_manager.cpp index 3157a0583d77997e8df78f4aa82a62ebdc608208..39139203c1727c9995a338d1794a12461c0c4ae9 100644 --- a/services/implementation/src/ability/standard/dm_dialog_manager.cpp +++ b/services/implementation/src/ability/standard/dm_dialog_manager.cpp @@ -29,7 +29,8 @@ namespace DistributedHardware { static constexpr int32_t INVALID_USERID = -1; static constexpr int32_t MESSAGE_PARCEL_KEY_SIZE = 3; static constexpr int32_t WAIT_DIALOG_CLOSE_TIME_S = 10; -const int32_t USLEEP_SHOW_PIN_TIME_US = 50000; // 50ms +const int32_t USLEEP_SHOW_PIN_TIME_US_200000 = 200000; // 200ms +const int32_t USLEEP_SHOW_PIN_TIME_US_100000 = 100000; // 100ms const std::string dmUiBundleName = "com.ohos.devicemanagerui"; const std::string comfirmAbilityName = "com.ohos.devicemanagerui.ConfirmUIExtAbility"; const std::string pinAbilityName = "com.ohos.devicemanagerui.PincodeUIExtAbility"; @@ -92,6 +93,14 @@ void DmDialogManager::ShowPinDialog(const std::string param) bundleName_ = dmUiBundleName; abilityName_ = pinAbilityName; pinCode_ = param; + usleep(USLEEP_SHOW_PIN_TIME_US_200000); // 200ms + LOGI("DmDialogManager::ShowPinDialog ConnectExtension start."); + auto abilityManager = AAFwk::AbilityManagerClient::GetInstance(); + if (abilityManager == nullptr) { + LOGE("AbilityManagerClient is nullptr"); + return; + } + abilityManager->DisconnectAbility(dialogConnectionCallback_); ConnectExtension(); } @@ -121,6 +130,7 @@ void DmDialogManager::ConnectExtension() bundleName = "com.ohos.systemui"; abilityName = "com.ohos.systemui.dialog"; want.SetElementName(bundleName, abilityName); + LOGI("ConnectAbility start, abilityName: %{public}s", abilityName.c_str()); ret = abilityManager->ConnectAbility(want, dialogConnectionCallback_, INVALID_USERID); if (ret != ERR_OK) { LOGE("ConnectExtensionAbility systemui failed."); @@ -131,7 +141,7 @@ void DmDialogManager::ConnectExtension() void DmDialogManager::DialogAbilityConnection::OnAbilityConnectDone( const AppExecFwk::ElementName& element, const sptr& remoteObject, int resultCode) { - LOGI("OnAbilityConnectDone"); + LOGI("OnAbilityConnectDone abilityName = %{public}s", DmDialogManager::GetAbilityName().c_str()); std::unique_lock lock(mutex_); if (remoteObject == nullptr) { LOGE("remoteObject is nullptr"); @@ -144,8 +154,9 @@ void DmDialogManager::DialogAbilityConnection::OnAbilityConnectDone( LOGE("wait dm dialog close failed."); return; } - usleep(USLEEP_SHOW_PIN_TIME_US); // 50ms + usleep(USLEEP_SHOW_PIN_TIME_US_100000); // 100ms } + MessageParcel data; MessageParcel reply; MessageOption option; diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index 7319f82af5ded395c9c8df7f25ce7cac063ba849..e9a253bffa0ab670b176383134ae39562f09208e 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -54,6 +54,7 @@ const int32_t DM_AUTH_TYPE_MAX = 5; const int32_t DM_AUTH_TYPE_MIN = 0; const int32_t AUTH_SESSION_SIDE_SERVER = 0; const int32_t USLEEP_TIME_MS = 500000; // 500ms +const int32_t USLEEP_SHOW_PIN_TIME_US_100000 = 100000; // 100ms const int32_t SYNC_DELETE_TIMEOUT = 60; const int32_t AUTH_DEVICE_TIMEOUT = 10; const int32_t SESSION_HEARTBEAT_TIMEOUT = 50; @@ -1320,6 +1321,8 @@ void DmAuthManager::ShowAuthInfoDialog() nlohmann::json jsonObj; jsonObj[PIN_CODE_KEY] = authResponseContext_->code; std::string authParam = jsonObj.dump(); + usleep(USLEEP_SHOW_PIN_TIME_US_100000); // 100ms + LOGI("dialogMgr.ShowPinDialog start, code: %{public}d", authResponseContext_->code); DmDialogManager dialogMgr; dialogMgr.ShowPinDialog(std::to_string(authResponseContext_->code)); }