From 57c6406d8fffd666c99bf50b6f71596b4cb87672 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Mon, 22 Dec 2025 08:25:29 +0100 Subject: [PATCH] Handle switch accounts via ecosystem links Signed-off-by: tobiasKaminsky --- app/src/main/java/com/nextcloud/utils/LinkHelper.kt | 2 +- .../owncloud/android/ui/activity/DrawerActivity.java | 2 +- .../android/ui/activity/FileDisplayActivity.kt | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/utils/LinkHelper.kt b/app/src/main/java/com/nextcloud/utils/LinkHelper.kt index 294c98d7b748..3eaa53ea14e1 100644 --- a/app/src/main/java/com/nextcloud/utils/LinkHelper.kt +++ b/app/src/main/java/com/nextcloud/utils/LinkHelper.kt @@ -49,7 +49,7 @@ object LinkHelper { if (intent != null) { // app installed - open directly // TODO handle null user? - intent.putExtra(FileDisplayActivity.KEY_ACCOUNT, user.hashCode()) + intent.putExtra(FileDisplayActivity.KEY_ACCOUNT, user) context.startActivity(intent) } else { // app not found - open market (Google Play Store, F-Droid, etc.) diff --git a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index f26047d581a3..a046b6c66458 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -1234,7 +1234,7 @@ private View findQuotaViewById(int id) { /** * restart helper method which is called after a changing the current account. */ - private void restart() { + protected void restart() { Intent i = new Intent(this, FileDisplayActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.setAction(FileDisplayActivity.RESTART); diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index cd383b4241da..76fafee18e5e 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -600,9 +600,17 @@ class FileDisplayActivity : OPEN_FILE -> { onOpenFileIntent(intent) } + Intent.ACTION_MAIN -> handleSwitchAccount(intent) } } + private fun handleSwitchAccount(intent: Intent) { + val accountName = intent.getStringExtra(KEY_ACCOUNT) + val account = accountManager.getAccountByName(accountName) + setAccount(account, false) + restart() + } + @SuppressLint("UnsafeIntentLaunch") private fun handleRestartIntent(intent: Intent) { if (intent.action != RESTART) { @@ -1327,6 +1335,8 @@ class FileDisplayActivity : override fun onResume() { Log_OC.v(TAG, "onResume() start") + handleCommonIntents(intent) + super.onResume() if (SettingsActivity.isBackPressed) { Log_OC.d(TAG, "User returned from settings activity, skipping reset content logic")