diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 20c10607b707..510fcb26a49d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -136,13 +136,20 @@ + android:label="@string/compose_activity_label"/> + + + - + + + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.nextcloud.ui.composeActivity + +import android.content.ComponentName +import android.content.Context +import android.content.pm.PackageManager +import com.owncloud.android.utils.theme.CapabilityUtils +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class ComposeProcessTextAlias @Inject constructor(private val context: Context) { + + fun configure() { + val capability = CapabilityUtils.getCapability(context) + val isAssistantAvailable = capability.assistant.isTrue + + val componentName = ComponentName( + context, + "com.nextcloud.ui.composeActivity.ComposeProcessTextAlias" + ) + + val newState = if (isAssistantAvailable) { + PackageManager.COMPONENT_ENABLED_STATE_ENABLED + } else { + PackageManager.COMPONENT_ENABLED_STATE_DISABLED + } + + context.packageManager.setComponentEnabledSetting( + componentName, + newState, + PackageManager.DONT_KILL_APP + ) + } +} diff --git a/app/src/main/java/com/owncloud/android/MainApp.java b/app/src/main/java/com/owncloud/android/MainApp.java index f46ed83f14e8..2a73e0d810cc 100644 --- a/app/src/main/java/com/owncloud/android/MainApp.java +++ b/app/src/main/java/com/owncloud/android/MainApp.java @@ -59,6 +59,7 @@ import com.nextcloud.client.preferences.DarkMode; import com.nextcloud.receiver.NetworkChangeListener; import com.nextcloud.receiver.NetworkChangeReceiver; +import com.nextcloud.ui.composeActivity.ComposeProcessTextAlias; import com.nextcloud.utils.extensions.ContextExtensionsKt; import com.nextcloud.utils.mdm.MDMConfig; import com.nmc.android.ui.LauncherActivity; @@ -78,6 +79,7 @@ import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.status.NextcloudVersion; +import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.ui.activity.SyncedFoldersActivity; import com.owncloud.android.ui.notifications.NotificationUtils; @@ -86,6 +88,7 @@ import com.owncloud.android.utils.PermissionUtil; import com.owncloud.android.utils.ReceiversHelper; import com.owncloud.android.utils.SecurityUtils; +import com.owncloud.android.utils.theme.CapabilityUtils; import com.owncloud.android.utils.theme.ViewThemeUtils; import org.conscrypt.Conscrypt; @@ -190,6 +193,8 @@ public class MainApp extends Application implements HasAndroidInjector, NetworkC @Inject WalledCheckCache walledCheckCache; + @Inject ComposeProcessTextAlias composeProcessTextAlias; + // workaround because injection is initialized on onAttachBaseContext // and getApplicationContext is null at that point, which crashes when getting current user @Inject Provider viewThemeUtilsProvider; @@ -372,8 +377,6 @@ public void onCreate() { if (!MDMConfig.INSTANCE.sendFilesSupport(this)) { disableDocumentsStorageProvider(); } - - } public void disableDocumentsStorageProvider() { @@ -387,6 +390,7 @@ public void disableDocumentsStorageProvider() { private final LifecycleEventObserver lifecycleEventObserver = ((lifecycleOwner, event) -> { if (event == Lifecycle.Event.ON_START) { Log_OC.d(TAG, "APP IN FOREGROUND"); + composeProcessTextAlias.configure(); if (preferences.startAutoUploadOnStart()) { FilesSyncHelper.startAutoUploadForEnabledSyncedFolders(syncedFolderProvider, 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 95f0192d22dc..0f275466a6a2 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 @@ -76,6 +76,7 @@ import com.nextcloud.model.WorkerState import com.nextcloud.model.WorkerState.FileDownloadCompleted import com.nextcloud.model.WorkerState.FileDownloadStarted import com.nextcloud.model.WorkerState.OfflineOperationsCompleted +import com.nextcloud.ui.composeActivity.ComposeProcessTextAlias import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.extensions.isActive import com.nextcloud.utils.extensions.lastFragment @@ -214,6 +215,9 @@ class FileDisplayActivity : @Inject lateinit var localBroadcastManager: LocalBroadcastManager + @Inject + lateinit var composeProcessTextAlias: ComposeProcessTextAlias + @Inject lateinit var preferences: AppPreferences @@ -2846,6 +2850,7 @@ class FileDisplayActivity : ) val userChanged = (existingAccountName != lastDisplayedAccountName) if (userChanged) { + composeProcessTextAlias.configure() Log_OC.d(TAG, "Initializing Fragments in onAccountChanged..") initFragments() if (file.isFolder && TextUtils.isEmpty(searchQuery)) {