Skip to content

Conversation

@alperozturk96
Copy link
Collaborator

@alperozturk96 alperozturk96 commented Oct 27, 2025

  • Tests written, or not not needed

Fixes - #15834

NullPointerException in ToolbarActivity

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
    at com.owncloud.android.ui.activity.ToolbarActivity.showSortListGroup(ToolbarActivity.java:263)
    at com.owncloud.android.ui.activity.FileDisplayActivity.prepareFragmentBeforeCommit(FileDisplayActivity.kt:681)
    at com.owncloud.android.ui.activity.FileDisplayActivity.setLeftFragment(FileDisplayActivity.kt:660)
    at com.owncloud.android.ui.activity.FileDisplayActivity.setLeftFragment(FileDisplayActivity.kt:755)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onOpenFileIntent(FileDisplayActivity.kt:649)
    at com.owncloud.android.ui.activity.FileDisplayActivity.handleCommonIntents(FileDisplayActivity.kt:574)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onCreate(FileDisplayActivity.kt:250)
    ...

NullPointerException in OCFileListFragment

java.lang.NullPointerException: Attempt to invoke interface method 'com.nextcloud.client.account.User com.nextcloud.client.account.UserAccountManager.getUser()' on a null object reference
    at com.owncloud.android.ui.fragment.OCFileListFragment.handlePendingDownloadFile(OCFileListFragment.java:1244)
    at com.owncloud.android.ui.fragment.OCFileListFragment.fileOnItemClick(OCFileListFragment.java:1239)
    at com.owncloud.android.ui.fragment.OCFileListFragment.onItemClicked(OCFileListFragment.java:1287)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onOpenFileIntent(FileDisplayActivity.kt:661)
    at com.owncloud.android.ui.activity.FileDisplayActivity.handleCommonIntents(FileDisplayActivity.kt:584)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onCreate(FileDisplayActivity.kt:259)
    ...

ClassCastException in Intent extra

W Key com.owncloud.android.ui.activity.FILE expected com.owncloud.android.datamodel.OCFile but value was of a different type. The default value <null> was returned.
java.lang.ClassCastException: Cannot cast java.lang.String to com.owncloud.android.datamodel.OCFile
    at java.lang.Class.cast(Class.java:4178)
    at android.os.BaseBundle.getValueAt(BaseBundle.java:436)
    at android.os.BaseBundle.getValue(BaseBundle.java:398)
    at android.os.BaseBundle.get(BaseBundle.java:782)
    at android.os.Bundle.getParcelable(Bundle.java:1121)
    at android.content.Intent.getParcelableExtra(Intent.java:9722)
    at androidx.core.content.IntentCompat$Api33Impl.getParcelableExtra(IntentCompat.java:330)
    at androidx.core.content.IntentCompat.getParcelableExtra(IntentCompat.java:222)
    at com.nextcloud.utils.extensions.IntentExtensionsKt.getParcelableArgument(IntentExtensions.kt:28)
    at com.owncloud.android.ui.activity.FileActivity.onCreate(FileActivity.java:242)
    at com.owncloud.android.ui.activity.FileDisplayActivity.onCreate(FileDisplayActivity.kt:255)
    ...

Changes

This PR addresses several issues related to shortcut creation and handling in FileDisplayActivity.

Nullability Issues in ToolbarActivities and Related Components

Previously, view elements in ToolbarActivities were nullable, causing crashes when accessed directly.

Simple null checks were insufficient because other dependencies, such as accountManager in handlePendingDownloadFile, could also be null when onOpenFileIntent was triggered directly via a shortcut.

To solve that: supportFragmentManager.executePendingTransactions() was added into the onOpenFileIntent.

Shortcut Creation Issues

The previous implementation of addShortcutToHomescreen passed only the file’s remotePath. FileDisplayActivity was relying on the EXTRA_FILE parcelable argument (OCFile) for direct file access.

Since ShortcutInfoCompat.Builder cannot accept an OCFile object directly, a new EXTRA_FILE_REMOTE_PATH argument was added to FileDisplayActivity.

ShortcutInfoCompat can be created for multiple files. The requestCode for each shortcut is now derived from file.hashCode() to guarantee uniqueness for every file item.

Demo

Screen.Recording.2025-10-27.at.10.32.34.mp4

@alperozturk96
Copy link
Collaborator Author

/backport to stable-3.34

@github-actions
Copy link

Codacy

Lint

TypemasterPR
Warnings4141
Errors1111

SpotBugs

CategoryBaseNew
Bad practice4242
Correctness7373
Dodgy code266266
Experimental11
Internationalization77
Malicious code vulnerability22
Multithreaded correctness3535
Performance4848
Security1818
Total492492

Signed-off-by: alperozturk <alper_ozturk@proton.me>
Signed-off-by: alperozturk <alper_ozturk@proton.me>
@alperozturk96 alperozturk96 force-pushed the fix/open-file-intent-crash branch from e717b2a to 27340de Compare October 29, 2025 10:06
@alperozturk96 alperozturk96 merged commit ac7d82a into master Oct 29, 2025
16 of 19 checks passed
@alperozturk96 alperozturk96 deleted the fix/open-file-intent-crash branch October 29, 2025 10:16
@github-actions
Copy link

APK file: https://www.kaminsky.me/nc-dev/android-artifacts/15855.apk

qrcode

To test this change/fix you can simply download above APK file and install and test it in parallel to your existing Nextcloud app.

@AndyScherzinger AndyScherzinger added this to the Nextcloud App 3.35.0 milestone Oct 29, 2025
@alperozturk96 alperozturk96 mentioned this pull request Oct 31, 2025
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

4 participants