Răsfoiți Sursa

Replace deprecated usages

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 an în urmă
părinte
comite
868da5bf7c
20 a modificat fișierele cu 122 adăugiri și 53 ștergeri
  1. 4 7
      app/src/main/java/com/nextcloud/client/files/downloader/FileTransferService.kt
  2. 3 2
      app/src/main/java/com/nextcloud/client/media/PlayerService.kt
  3. 2 1
      app/src/main/java/com/nextcloud/utils/extensions/BundleExtensions.kt
  4. 45 0
      app/src/main/java/com/nextcloud/utils/extensions/IntentExtensions.kt
  5. 5 1
      app/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java
  6. 4 3
      app/src/main/java/com/owncloud/android/files/services/FileDownloader.java
  7. 5 3
      app/src/main/java/com/owncloud/android/files/services/FileUploader.java
  8. 6 3
      app/src/main/java/com/owncloud/android/services/OperationsService.java
  9. 1 1
      app/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.kt
  10. 6 4
      app/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java
  11. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java
  12. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java
  13. 3 2
      app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java
  14. 14 8
      app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
  15. 1 0
      app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  16. 2 6
      app/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.kt
  17. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/SetupEncryptionActivity.kt
  18. 10 6
      app/src/main/java/com/owncloud/android/ui/activity/SsoGrantPermissionActivity.java
  19. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
  20. 3 2
      app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java

+ 4 - 7
app/src/main/java/com/nextcloud/client/files/downloader/FileTransferService.kt

@@ -32,6 +32,7 @@ import com.nextcloud.client.network.ClientFactory
 import com.nextcloud.client.network.ConnectivityService
 import com.nextcloud.client.notifications.AppNotificationManager
 import com.nextcloud.utils.ForegroundServiceHelper
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.datamodel.FileDataStorageManager
 import com.owncloud.android.datamodel.ForegroundServiceType
 import com.owncloud.android.datamodel.UploadsStorageManager
@@ -117,7 +118,7 @@ class FileTransferService : Service() {
             )
         }
 
-        val request: Request = intent.getParcelableExtra(EXTRA_REQUEST)!!
+        val request: Request = intent.getParcelableArgument(EXTRA_REQUEST, Request::class.java)!!
         val transferManager = getTransferManager(request.user)
         transferManager.enqueue(request)
 
@@ -127,12 +128,8 @@ class FileTransferService : Service() {
     }
 
     override fun onBind(intent: Intent?): IBinder? {
-        val user = intent?.getParcelableExtra<User>(EXTRA_USER)
-        if (user != null) {
-            return Binder(getTransferManager(user), this)
-        } else {
-            return null
-        }
+        val user = intent?.getParcelableArgument(EXTRA_USER, User::class.java) ?: return null
+        return Binder(getTransferManager(user), this)
     }
 
     private fun onTransferUpdate(transfer: Transfer) {

+ 3 - 2
app/src/main/java/com/nextcloud/client/media/PlayerService.kt

@@ -32,6 +32,7 @@ import androidx.core.app.NotificationCompat
 import com.nextcloud.client.account.User
 import com.nextcloud.client.network.ClientFactory
 import com.nextcloud.utils.ForegroundServiceHelper
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.datamodel.ForegroundServiceType
 import com.owncloud.android.datamodel.OCFile
@@ -144,8 +145,8 @@ class PlayerService : Service() {
     }
 
     private fun onActionPlay(intent: Intent) {
-        val user: User = intent.getParcelableExtra(EXTRA_USER)!!
-        val file: OCFile = intent.getParcelableExtra(EXTRA_FILE)!!
+        val user: User = intent.getParcelableArgument(EXTRA_USER, User::class.java)!!
+        val file: OCFile = intent.getParcelableArgument(EXTRA_FILE, OCFile::class.java)!!
         val startPos = intent.getLongExtra(EXTRA_START_POSITION_MS, 0)
         val autoPlay = intent.getBooleanExtra(EXTRA_AUTO_PLAY, true)
         val item = PlaylistItem(file = file, startPositionMs = startPos, autoPlay = autoPlay, user = user)

+ 2 - 1
app/src/main/java/com/nextcloud/utils/extensions/BundleExtensions.kt

@@ -30,7 +30,7 @@ fun <T : Serializable?> Bundle.getSerializableArgument(key: String, type: Class<
     return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
         this.getSerializable(key, type)
     } else {
-        @Suppress("UNCHECKED_CAST")
+        @Suppress("UNCHECKED_CAST", "DEPRECATION")
         this.getSerializable(key) as T
     }
 }
@@ -39,6 +39,7 @@ fun <T : Parcelable?> Bundle.getParcelableArgument(key: String, type: Class<T>):
     return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
         this.getParcelable(key, type)
     } else {
+        @Suppress("DEPRECATION")
         this.getParcelable(key)
     }
 }

+ 45 - 0
app/src/main/java/com/nextcloud/utils/extensions/IntentExtensions.kt

@@ -0,0 +1,45 @@
+/*
+ * Nextcloud Android client application
+ *
+ * @author Alper Ozturk
+ * Copyright (C) 2023 Alper Ozturk
+ * Copyright (C) 2023 Nextcloud GmbH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.utils.extensions
+
+import android.content.Intent
+import android.os.Build
+import android.os.Parcelable
+import java.io.Serializable
+
+fun <T : Serializable?> Intent.getSerializableArgument(key: String, type: Class<T>): T? {
+    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+        this.getSerializableExtra(key, type)
+    } else {
+        @Suppress("UNCHECKED_CAST", "DEPRECATION")
+        this.getSerializableExtra(key) as T
+    }
+}
+
+fun <T : Parcelable?> Intent.getParcelableArgument(key: String, type: Class<T>): T? {
+    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+        this.getParcelableExtra(key, type)
+    } else {
+        @Suppress("DEPRECATION")
+        this.getParcelableExtra(key)
+    }
+}

+ 5 - 1
app/src/main/java/com/owncloud/android/authentication/AccountAuthenticatorActivity.java

@@ -20,6 +20,8 @@ import android.accounts.AccountAuthenticatorResponse;
 import android.accounts.AccountManager;
 import android.os.Bundle;
 
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
+
 import androidx.appcompat.app.AppCompatActivity;
 
 /*
@@ -59,7 +61,9 @@ public abstract class AccountAuthenticatorActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
 
         mAccountAuthenticatorResponse =
-                getIntent().getParcelableExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE);
+            IntentExtensionsKt.getParcelableArgument(getIntent(),
+                                                     AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,
+                                                     AccountAuthenticatorResponse.class);
 
         if (mAccountAuthenticatorResponse != null) {
             mAccountAuthenticatorResponse.onRequestContinued();

+ 4 - 3
app/src/main/java/com/owncloud/android/files/services/FileDownloader.java

@@ -43,6 +43,7 @@ import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.files.downloader.DownloadTask;
 import com.nextcloud.java.util.Optional;
 import com.nextcloud.utils.ForegroundServiceHelper;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -208,13 +209,13 @@ public class FileDownloader extends Service
             Log_OC.e(TAG, "Not enough information provided in intent");
             return START_NOT_STICKY;
         } else {
-            final User user = intent.getParcelableExtra(EXTRA_USER);
-            final OCFile file = intent.getParcelableExtra(EXTRA_FILE);
+            final User user = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
+            final OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
             final String behaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR);
 
             DownloadType downloadType = DownloadType.DOWNLOAD;
             if (intent.hasExtra(DOWNLOAD_TYPE)) {
-                downloadType = (DownloadType) intent.getSerializableExtra(DOWNLOAD_TYPE);
+                downloadType = IntentExtensionsKt.getSerializableArgument(intent, DOWNLOAD_TYPE, DownloadType.class);
             }
             String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
             String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);

+ 5 - 3
app/src/main/java/com/owncloud/android/files/services/FileUploader.java

@@ -59,6 +59,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.utils.FileUploaderDelegate;
 import com.nextcloud.java.util.Optional;
 import com.nextcloud.utils.ForegroundServiceHelper;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AuthenticatorActivity;
@@ -329,7 +330,7 @@ public class FileUploader extends Service
             return Service.START_NOT_STICKY;
         }
 
-        final Account account = intent.getParcelableExtra(KEY_ACCOUNT);
+        final Account account = IntentExtensionsKt.getParcelableArgument(intent, KEY_ACCOUNT, Account.class);
         if (account == null) {
             return Service.START_NOT_STICKY;
         }
@@ -436,7 +437,7 @@ public class FileUploader extends Service
         }
         // at this point variable "OCFile[] files" is loaded correctly.
 
-        NameCollisionPolicy nameCollisionPolicy = (NameCollisionPolicy) intent.getSerializableExtra(KEY_NAME_COLLISION_POLICY);
+        NameCollisionPolicy nameCollisionPolicy = IntentExtensionsKt.getSerializableArgument(intent, KEY_NAME_COLLISION_POLICY, NameCollisionPolicy.class);
         if (nameCollisionPolicy == null) {
             nameCollisionPolicy = NameCollisionPolicy.DEFAULT;
         }
@@ -543,7 +544,8 @@ public class FileUploader extends Service
     private void retryUploads(Intent intent, User user, List<String> requestedUploads) {
         boolean onWifiOnly;
         boolean whileChargingOnly;
-        OCUpload upload = intent.getParcelableExtra(KEY_RETRY_UPLOAD);
+
+        OCUpload upload = IntentExtensionsKt.getParcelableArgument(intent, KEY_RETRY_UPLOAD, OCUpload.class);
 
         onWifiOnly = upload.isUseWifiOnly();
         whileChargingOnly = upload.isWhileChargingOnly();

+ 6 - 3
app/src/main/java/com/owncloud/android/services/OperationsService.java

@@ -42,9 +42,11 @@ import android.util.Pair;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.db.OCUpload;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
@@ -190,7 +192,8 @@ public class OperationsService extends Service {
                 Log_OC.e(TAG, "Not enough information provided in intent");
                 return START_NOT_STICKY;
             }
-            Account account = intent.getParcelableExtra(EXTRA_ACCOUNT);
+
+            Account account = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_ACCOUNT, Account.class);
             String remotePath = intent.getStringExtra(EXTRA_REMOTE_PATH);
 
             Pair<Account, String> itemSyncKey = new Pair<>(account, remotePath);
@@ -497,7 +500,7 @@ public class OperationsService extends Service {
                 Log_OC.e(TAG, "Not enough information provided in intent");
 
             } else {
-                Account account = operationIntent.getParcelableExtra(EXTRA_ACCOUNT);
+                Account account = IntentExtensionsKt.getParcelableArgument(operationIntent, EXTRA_ACCOUNT, Account.class);
                 User user = toUser(account);
                 String serverUrl = operationIntent.getStringExtra(EXTRA_SERVER_URL);
                 target = new Target(account, (serverUrl == null) ? null : Uri.parse(serverUrl));
@@ -590,7 +593,7 @@ public class OperationsService extends Service {
                     case ACTION_CREATE_SHARE_WITH_SHAREE:
                         remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
                         String shareeName = operationIntent.getStringExtra(EXTRA_SHARE_WITH);
-                        shareType = (ShareType) operationIntent.getSerializableExtra(EXTRA_SHARE_TYPE);
+                        shareType = IntentExtensionsKt.getSerializableArgument(operationIntent, EXTRA_SHARE_TYPE, ShareType.class);
                         int permissions = operationIntent.getIntExtra(EXTRA_SHARE_PERMISSIONS, -1);
                         String noteMessage = operationIntent.getStringExtra(EXTRA_SHARE_NOTE);
                         String sharePassword = operationIntent.getStringExtra(EXTRA_SHARE_PASSWORD);

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.kt

@@ -78,7 +78,7 @@ class ConflictsResolveActivity : FileActivity(), OnConflictDecisionMadeListener
             localBehaviour = savedInstanceState.getInt(EXTRA_LOCAL_BEHAVIOUR)
         } else {
             conflictUploadId = intent.getLongExtra(EXTRA_CONFLICT_UPLOAD_ID, -1)
-            existingFile = intent.getParcelableExtra(EXTRA_EXISTING_FILE)
+            existingFile = intent.getParcelableArgument(EXTRA_EXISTING_FILE, OCFile::class.java)
             localBehaviour = intent.getIntExtra(EXTRA_LOCAL_BEHAVIOUR, localBehaviour)
         }
     }

+ 6 - 4
app/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java

@@ -28,6 +28,7 @@ import android.os.Bundle;
 
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.jobs.BackgroundJobManager;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.fragment.FileFragment;
@@ -104,13 +105,14 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag
         Intent intent = getIntent();
         if (savedInstanceState == null) {
             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
-            if (intent == null || intent.getParcelableExtra(EXTRA_FILE) == null ||
-                intent.getParcelableExtra(EXTRA_USER) == null) {
+            if (intent == null ||
+                IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class) == null ||
+                IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class) == null) {
                 BackupFragment fragment = BackupFragment.create(showSidebar);
                 transaction.add(R.id.frame_container, fragment);
             } else {
-                OCFile file = intent.getParcelableExtra(EXTRA_FILE);
-                User user = intent.getParcelableExtra(EXTRA_USER);
+                OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
+                User user =  IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
                 BackupListFragment contactListFragment = BackupListFragment.newInstance(file, user);
                 transaction.add(R.id.frame_container, contactListFragment);
             }

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java

@@ -42,6 +42,7 @@ import com.google.android.material.snackbar.Snackbar;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.preferences.DarkMode;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.RichdocumentsWebviewBinding;
 import com.owncloud.android.datamodel.OCFile;
@@ -144,7 +145,7 @@ public abstract class EditorWebView extends ExternalSiteWebView {
             }
         });
 
-        setFile(getIntent().getParcelableExtra(ExternalSiteWebView.EXTRA_FILE));
+        setFile(IntentExtensionsKt.getParcelableArgument(getIntent(), ExternalSiteWebView.EXTRA_FILE, OCFile.class));
 
         if (getFile() == null) {
             Toast.makeText(getApplicationContext(),

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/ErrorsWhileCopyingHandlerActivity.java

@@ -36,6 +36,7 @@ import android.widget.ListView;
 import android.widget.TextView;
 
 import com.nextcloud.client.account.User;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
@@ -91,7 +92,7 @@ public class ErrorsWhileCopyingHandlerActivity  extends AppCompatActivity implem
 
                 /// read extra parameters in intent
         Intent intent = getIntent();
-        user = intent.getParcelableExtra(EXTRA_USER);
+        user = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
         mRemotePaths = intent.getStringArrayListExtra(EXTRA_REMOTE_PATHS);
         mLocalPaths = intent.getStringArrayListExtra(EXTRA_LOCAL_PATHS);
         mStorageManager = new FileDataStorageManager(user, getContentResolver());

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -46,6 +46,7 @@ import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.utils.EditorUtils;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AuthenticatorActivity;
@@ -216,8 +217,8 @@ public abstract class FileActivity extends DrawerActivity
                 viewThemeUtils.files.themeActionBar(this, actionBar, savedInstanceState.getString(KEY_ACTION_BAR_TITLE));
             }
         } else {
-            User user = getIntent().getParcelableExtra(FileActivity.EXTRA_USER);
-            mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);
+            User user = IntentExtensionsKt.getParcelableArgument(getIntent(), FileActivity.EXTRA_USER, User.class);
+            mFile = IntentExtensionsKt.getParcelableArgument(getIntent(), FileActivity.EXTRA_FILE, OCFile.class);
             mFromNotification = getIntent().getBooleanExtra(FileActivity.EXTRA_FROM_NOTIFICATION,
                     false);
             if (user != null) {

+ 14 - 8
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -71,6 +71,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.utils.IntentUtil;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.nextcloud.utils.view.FastScrollUtils;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -372,7 +373,7 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
             PermissionUtil.requestExternalStoragePermission(this, viewThemeUtils);
         }
 
-        if (getIntent().getParcelableExtra(OCFileListFragment.SEARCH_EVENT) != null) {
+        if (IntentExtensionsKt.getParcelableArgument(getIntent(), OCFileListFragment.SEARCH_EVENT, SearchEvent.class) != null) {
             switchToSearchFragment(savedInstanceState);
 
             int menuId = getIntent().getIntExtra(DRAWER_MENU_ID, -1);
@@ -465,7 +466,10 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
             OCFileListFragment listOfFiles = new OCFileListFragment();
             Bundle args = new Bundle();
 
-            args.putParcelable(OCFileListFragment.SEARCH_EVENT, getIntent().getParcelableExtra(OCFileListFragment.SEARCH_EVENT));
+            args.putParcelable(OCFileListFragment.SEARCH_EVENT,
+                               IntentExtensionsKt.getParcelableArgument(getIntent(),
+                                                                        OCFileListFragment.SEARCH_EVENT,
+                                                                        SearchEvent.class));
             args.putBoolean(OCFileListFragment.ARG_ALLOW_CONTEXTUAL_ACTIONS, true);
 
             listOfFiles.setArguments(args);
@@ -511,10 +515,10 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
         setIntent(intent);
 
         if (ACTION_DETAILS.equalsIgnoreCase(intent.getAction())) {
-            OCFile file = intent.getParcelableExtra(EXTRA_FILE);
+            OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
             setFile(file);
             setIntent(intent);
-            setFile(intent.getParcelableExtra(EXTRA_FILE));
+            setFile(IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class)); // is it needed?
             showDetails(file);
         } else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
             handleOpenFileViaIntent(intent);
@@ -527,7 +531,7 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
             if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                 setIntent(intent);
 
-                SearchEvent searchEvent = intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT);
+                SearchEvent searchEvent = IntentExtensionsKt.getParcelableArgument(intent, OCFileListFragment.SEARCH_EVENT, SearchEvent.class)
                 if (searchEvent != null) {
                     if (SearchRemoteOperation.SearchType.PHOTO_SEARCH == searchEvent.getSearchType()) {
                         Log_OC.d(this, "Switch to photo search fragment");
@@ -1076,8 +1080,9 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
         syncAndUpdateFolder(false, true);
 
         OCFile startFile = null;
-        if (getIntent() != null && getIntent().getParcelableExtra(EXTRA_FILE) != null) {
-            startFile = getIntent().getParcelableExtra(EXTRA_FILE);
+        OCFile fileArgs = IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_FILE, OCFile.class);
+        if (getIntent() != null && fileArgs != null) {
+            startFile = fileArgs;
             setFile(startFile);
         }
 
@@ -1571,7 +1576,8 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
             // a new chance to get the mDownloadBinder through
             // getFileDownloadBinder() - THIS IS A MESS
             OCFileListFragment listOfFiles = getListOfFilesFragment();
-            if (listOfFiles != null && (getIntent() == null || (getIntent() != null && getIntent().getParcelableExtra(EXTRA_FILE) == null))) {
+            if (listOfFiles != null && (getIntent() == null || (getIntent() != null &&
+                IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_FILE, OCFile.class) == null))) {
                 listOfFiles.listDirectory(MainApp.isOnlyOnDevice(), false);
             }
             Fragment leftFragment = getLeftFragment();

+ 1 - 0
app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -61,6 +61,7 @@ import com.google.android.material.button.MaterialButton;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.preferences.AppPreferences;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.ReceiveExternalFilesBinding;

+ 2 - 6
app/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.kt

@@ -35,6 +35,7 @@ import androidx.activity.result.ActivityResultLauncher
 import androidx.activity.result.contract.ActivityResultContracts
 import com.nextcloud.client.account.CurrentAccountProvider
 import com.nextcloud.client.network.ClientFactory
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.lib.common.utils.Log_OC
@@ -100,12 +101,7 @@ class RichDocumentsEditorWebView : EditorWebView() {
     }
 
     private fun handleRemoteFile(data: Intent) {
-        val file = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            data.getParcelableExtra(FolderPickerActivity.EXTRA_FILES, OCFile::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            data.getParcelableExtra(FolderPickerActivity.EXTRA_FILES)
-        }
+        val file = FolderPickerActivity.EXTRA_FILES?.let { data.getParcelableArgument(it, OCFile::class.java) }
 
         Thread {
             val user = currentAccountProvider?.user

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/SetupEncryptionActivity.kt

@@ -27,6 +27,7 @@ import android.os.Bundle
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import com.nextcloud.client.account.User
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.ui.dialog.SetupEncryptionDialogFragment
 
@@ -34,7 +35,7 @@ class SetupEncryptionActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        val user = intent?.getParcelableExtra("EXTRA_USER") as User?
+        val user = intent?.getParcelableArgument("EXTRA_USER", User::class.java)
 
         if (user == null) {
             Toast.makeText(this, getString(R.string.error_showing_encryption_dialog), Toast.LENGTH_LONG).show()

+ 10 - 6
app/src/main/java/com/owncloud/android/ui/activity/SsoGrantPermissionActivity.java

@@ -40,6 +40,7 @@ import android.text.style.StyleSpan;
 
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.nextcloud.android.sso.Constants;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.DialogSsoGrantPermissionBinding;
@@ -92,13 +93,16 @@ public class SsoGrantPermissionActivity extends BaseActivity {
         if (callingActivity != null) {
             packageName = callingActivity.getPackageName();
             final String appName = getAppNameForPackage(packageName);
-            account = getIntent().getParcelableExtra(NEXTCLOUD_FILES_ACCOUNT);
+            account = IntentExtensionsKt.getParcelableArgument(getIntent(), NEXTCLOUD_FILES_ACCOUNT, Account.class);
+
+            if (account != null) {
+                final SpannableStringBuilder dialogText = makeSpecialPartsBold(
+                    getString(R.string.single_sign_on_request_token, appName, account.name),
+                    appName,
+                    account.name);
+                binding.permissionText.setText(dialogText);
+            }
 
-            final SpannableStringBuilder dialogText = makeSpecialPartsBold(
-                getString(R.string.single_sign_on_request_token, appName, account.name),
-                appName,
-                account.name);
-            binding.permissionText.setText(dialogText);
             try {
                 if (packageName != null) {
                     Drawable appIcon = getPackageManager().getApplicationIcon(packageName);

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt

@@ -45,6 +45,7 @@ import com.nextcloud.client.jobs.MediaFoldersDetectionWork
 import com.nextcloud.client.jobs.NotificationWork
 import com.nextcloud.client.preferences.AppPreferences
 import com.nextcloud.client.preferences.SubFolderRule
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.BuildConfig
 import com.owncloud.android.MainApp
 import com.owncloud.android.R
@@ -630,7 +631,7 @@ class SyncedFoldersActivity :
         if (requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_REMOTE_FOLDER &&
             resultCode == RESULT_OK && syncedFolderPreferencesDialogFragment != null
         ) {
-            val chosenFolder: OCFile = data!!.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER)!!
+            val chosenFolder: OCFile = FolderPickerActivity.EXTRA_FOLDER?.let { data!!.getParcelableArgument(it, OCFile::class.java) } ?: return
             syncedFolderPreferencesDialogFragment!!.setRemoteFolderSummary(chosenFolder.remotePath)
         } else if (
             requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_LOCAL_FOLDER &&

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -39,6 +39,7 @@ import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.editimage.EditImageActivity;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -123,7 +124,7 @@ public class PreviewImageActivity extends FileActivity implements
 
         setContentView(R.layout.preview_image_activity);
 
-        livePhotoFile = getIntent().getParcelableExtra(EXTRA_LIVE_PHOTO_FILE);
+        livePhotoFile = IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_LIVE_PHOTO_FILE, OCFile.class);
 
         // Navigation Drawer
         setupDrawer();
@@ -161,7 +162,7 @@ public class PreviewImageActivity extends FileActivity implements
 
     private void initViewPager(User user) {
         // virtual folder
-        final Serializable virtualFolderType = getIntent().getSerializableExtra(EXTRA_VIRTUAL_TYPE);
+        final Serializable virtualFolderType = IntentExtensionsKt.getSerializableArgument(getIntent(), EXTRA_VIRTUAL_TYPE, Serializable.class);
         if (virtualFolderType != null && virtualFolderType != VirtualFolderType.NONE) {
             VirtualFolderType type = (VirtualFolderType) virtualFolderType;