diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt index ef31a7d2..d909431e 100644 --- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt +++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt @@ -476,4 +476,12 @@ class AmneziaActivity : QtActivity() { window.setFlags(flag, LayoutParams.FLAG_SECURE) } } + + @Suppress("unused") + fun minimizeApp() { + Log.v(TAG, "Minimize application") + mainScope.launch { + moveTaskToBack(false) + } + } } diff --git a/client/platforms/android/android_controller.cpp b/client/platforms/android/android_controller.cpp index e18fd864..328ceebc 100644 --- a/client/platforms/android/android_controller.cpp +++ b/client/platforms/android/android_controller.cpp @@ -209,6 +209,11 @@ void AndroidController::setScreenshotsEnabled(bool enabled) callActivityMethod("setScreenshotsEnabled", "(Z)V", enabled); } +void AndroidController::minimizeApp() +{ + callActivityMethod("minimizeApp", "()V"); +} + // Moving log processing to the Android side jclass AndroidController::log; jmethodID AndroidController::logDebug; diff --git a/client/platforms/android/android_controller.h b/client/platforms/android/android_controller.h index 6c104f3c..d6eedf85 100644 --- a/client/platforms/android/android_controller.h +++ b/client/platforms/android/android_controller.h @@ -40,6 +40,7 @@ public: void exportLogsFile(const QString &fileName); void clearLogs(); void setScreenshotsEnabled(bool enabled); + void minimizeApp(); static bool initLogging(); static void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message); diff --git a/client/ui/controllers/pageController.cpp b/client/ui/controllers/pageController.cpp index a799c52f..56268b2c 100644 --- a/client/ui/controllers/pageController.cpp +++ b/client/ui/controllers/pageController.cpp @@ -7,6 +7,7 @@ #endif #ifdef Q_OS_ANDROID + #include "platforms/android/android_controller.h" #include "platforms/android/android_utils.h" #include #endif @@ -74,6 +75,13 @@ void PageController::closeWindow() #endif } +void PageController::hideWindow() +{ +#ifdef Q_OS_ANDROID + AndroidController::instance()->minimizeApp(); +#endif +} + void PageController::keyPressEvent(Qt::Key key) { switch (key) { diff --git a/client/ui/controllers/pageController.h b/client/ui/controllers/pageController.h index 9118cca8..5e058359 100644 --- a/client/ui/controllers/pageController.h +++ b/client/ui/controllers/pageController.h @@ -76,6 +76,7 @@ public slots: QString getPagePath(PageLoader::PageEnum page); void closeWindow(); + void hideWindow(); void keyPressEvent(Qt::Key key); unsigned int getInitialPageNavigationBarColor(); diff --git a/client/ui/qml/Pages2/PageSetupWizardStart.qml b/client/ui/qml/Pages2/PageSetupWizardStart.qml index b4d86326..58aa90c1 100644 --- a/client/ui/qml/Pages2/PageSetupWizardStart.qml +++ b/client/ui/qml/Pages2/PageSetupWizardStart.qml @@ -24,6 +24,7 @@ PageType { function onClosePage() { if (stackView.depth <= 1) { + PageController.hideWindow() return } stackView.pop() diff --git a/client/ui/qml/Pages2/PageStart.qml b/client/ui/qml/Pages2/PageStart.qml index ee4001a0..0411c10b 100644 --- a/client/ui/qml/Pages2/PageStart.qml +++ b/client/ui/qml/Pages2/PageStart.qml @@ -40,6 +40,7 @@ PageType { function onClosePage() { if (tabBarStackView.depth <= 1) { + PageController.hideWindow() return } tabBarStackView.pop()