notes-android icon indicating copy to clipboard operation
notes-android copied to clipboard

4.2.0 widget crash on Android 14

Open weimdall opened this issue 10 months ago • 28 comments

Hello,

Since 4.2.0 update, the NextCloud Notes widget is no longer working on my phone. Each time the widget loads, I get the following trace:

App Version: 4.2.0
App Version Code: 40020090
App Flavor: play

Files App Version Code: 30280090 (PROD)

---

OS Version: 4.14.336-perf-gf34c9ab5042f(4e704b240a)
OS API Level: 34
Device: OnePlus7
Manufacturer: OnePlus
Model (and Product): GM1901 (OnePlus7)

---

java.lang.RuntimeException: Unable to start receiver it.niedermann.owncloud.notes.widget.notelist.NoteListWidget: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4499)
	at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:205)
	at android.os.Looper.loop(Looper.java:294)
	at android.app.ActivityThread.main(ActivityThread.java:8248)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3061)
	at android.os.Parcel.createException(Parcel.java:3041)
	at android.os.Parcel.readException(Parcel.java:3024)
	at android.os.Parcel.readException(Parcel.java:2966)
	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:6597)
	at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:571)
	at android.app.PendingIntent.getActivity(PendingIntent.java:552)
	at android.app.PendingIntent.getActivity(PendingIntent.java:516)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateAppWidget(NoteListWidget.java:44)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.onReceive(NoteListWidget.java:75)
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4490)
	... 9 more

weimdall avatar Mar 26 '24 16:03 weimdall

Same issue, tried a reinstall of the app and a full cache wipe. Only the widget, app is fine otherwise

App Version: 4.2.0
App Version Code: 40020090
App Flavor: play

Files App Version Code: 30280090 (PROD)

---

OS Version: 5.10.189-android13-4-00012-g1217bb583cc5-ab11174560(11445699)
OS API Level: 34
Device: panther
Manufacturer: Google
Model (and Product): Pixel 7 (panther)

---

java.lang.RuntimeException: Unable to start receiver it.niedermann.owncloud.notes.widget.notelist.NoteListWidget: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:4672)
    at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2357)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loopOnce(Looper.java:232)
    at android.os.Looper.loop(Looper.java:317)
    at android.app.ActivityThread.main(ActivityThread.java:8501)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3186)
    at android.os.Parcel.createException(Parcel.java:3166)
    at android.os.Parcel.readException(Parcel.java:3149)
    at android.os.Parcel.readException(Parcel.java:3091)
    at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:6668)
    at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:571)
    at android.app.PendingIntent.getActivity(PendingIntent.java:552)
    at android.app.PendingIntent.getActivity(PendingIntent.java:516)
    at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateAppWidget(NoteListWidget.java:44)
    at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.onReceive(NoteListWidget.java:75)
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:4663)
    ... 9 more

MyrnaMoynel avatar Mar 26 '24 23:03 MyrnaMoynel

Same issue, widget not working on A14

mark99i avatar Mar 27 '24 07:03 mark99i

Same here, Pixel 6A

mirol99 avatar Mar 28 '24 11:03 mirol99

For others with the same issue which did not quite understand the implications of the previous comments: as a temporary workaround, it is enough to remove the widget from the home screen. Afterwards, the Notes app is usable again (though of course without the widget). While the widget was still there, I got a crash even when directly opening the app.

nspo avatar Mar 28 '24 15:03 nspo

Thanks! ___ mobil gesendet ___

Rainer Scheer 0171 9988028

28.03.2024 16:57:51 Nicolai Spohrer @.***>:

For others with the same issue which did not quite understand the implications of the previous comments: as a temporary workaround, it is enough to remove the widget from the home screen. Afterwards, the Notes app is usable again (though of course without the widget). While the widget was still there, I got a crash even when directly opening the app.

— Reply to this email directly, view it on GitHub[https://github.com/nextcloud/notes-android/issues/2091#issuecomment-2025562204], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AMUFQ3LVNRIYH3IXE37USD3Y2QVW5AVCNFSM6AAAAABFJHK3OWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRVGU3DEMRQGQ]. You are receiving this because you commented. [Verfolgungsbild][https://github.com/notifications/beacon/AMUFQ3I2NFB43HPVCMEXTA3Y2QVW5A5CNFSM6AAAAABFJHK3OWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTTYXOQFY.gif]

mirol99 avatar Mar 28 '24 16:03 mirol99

Any chance we can have a Dev chime in?

BloodyIron avatar Mar 28 '24 21:03 BloodyIron

Same here. Galaxy A52s 5g

App Version: 4.2.0
App Version Code: 40020090
App Flavor: fdroid

Files App Version Code: 30280090 (PROD)

---

OS Version: 5.4.233-qgki-27763529-abA528BXXS6FXB7(A528BXXS6FXB7)
OS API Level: 34
Device: a52sxq
Manufacturer: samsung
Model (and Product): SM-A528B (a52sxqeea)

---

java.lang.RuntimeException: Unable to start receiver it.niedermann.owncloud.notes.widget.notelist.NoteListWidget: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4905)
	at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:230)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8893)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
	at android.os.Parcel.createException(Parcel.java:3053)
	at android.os.Parcel.readException(Parcel.java:3036)
	at android.os.Parcel.readException(Parcel.java:2978)
	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7021)
	at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:561)
	at android.app.PendingIntent.getActivity(PendingIntent.java:537)
	at android.app.PendingIntent.getActivity(PendingIntent.java:501)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateAppWidget(NoteListWidget.java:44)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.onReceive(NoteListWidget.java:75)
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4896)
	... 9 more
Caused by: android.os.RemoteException: Remote stack trace:
	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:6460)
	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:6403)
	at android.app.IActivityManager$Stub.onTransact$getIntentSenderWithFeature$(IActivityManager.java:11842)
	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3381)
	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3195)


msrn avatar Mar 31 '24 12:03 msrn

Same here, Pixel 8, stock rooted Android 14.

App Version: 4.2.0
App Version Code: 40020090
App Flavor: fdroid

Files App Version Code: 30280190 (PROD)

---

OS Version: 5.15.131-android14-11-gd99d9fe08e0c-ab11209359(11445699)
OS API Level: 34
Device: shiba
Manufacturer: Google
Model (and Product): Pixel 8 (shiba)

---

java.lang.RuntimeException: Unable to start receiver it.niedermann.owncloud.notes.widget.notelist.NoteListWidget: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4672)
	at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2357)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loopOnce(Looper.java:232)
	at android.os.Looper.loop(Looper.java:317)
	at android.app.ActivityThread.main(ActivityThread.java:8501)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3186)
	at android.os.Parcel.createException(Parcel.java:3166)
	at android.os.Parcel.readException(Parcel.java:3149)
	at android.os.Parcel.readException(Parcel.java:3091)
	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:6668)
	at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:571)
	at android.app.PendingIntent.getActivity(PendingIntent.java:552)
	at android.app.PendingIntent.getActivity(PendingIntent.java:516)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateAppWidget(NoteListWidget.java:44)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.onReceive(NoteListWidget.java:75)
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4663)
	... 9 more
Caused by: android.os.RemoteException: Remote stack trace:
	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeatureAsApp(ActivityManagerService.java:5399)
	at com.android.server.am.ActivityManagerService.getIntentSenderWithFeature(ActivityManagerService.java:5342)
	at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:3296)
	at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2798)
	at android.os.Binder.execTransactInternal(Binder.java:1496)


m0yP avatar Mar 31 '24 18:03 m0yP

Same here, Widget broken since Update to 4.2.0. App itself works. Deinstall, cache/data wipe had no effect.

App Version: 4.2.0
App Version Code: 40020090
App Flavor: fdroid

Files App Version Code: 30280090 (PROD)

---

OS Version: 4.14.190-perf-27790765-abA525FXXU6EXB3(A525FXXU6EXB3)
OS API Level: 34
Device: a52q
Manufacturer: samsung
Model (and Product): SM-A525F (a52qnseea)

---

java.lang.RuntimeException: Unable to start receiver it.niedermann.owncloud.notes.widget.notelist.NoteListWidget: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4905)
	at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2498)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loopOnce(Looper.java:230)
	at android.os.Looper.loop(Looper.java:319)
	at android.app.ActivityThread.main(ActivityThread.java:8893)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
Caused by: java.lang.IllegalArgumentException: it.niedermann.owncloud.notes: Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3073)
	at android.os.Parcel.createException(Parcel.java:3053)
	at android.os.Parcel.readException(Parcel.java:3036)
	at android.os.Parcel.readException(Parcel.java:2978)
	at android.app.IActivityManager$Stub$Proxy.getIntentSenderWithFeature(IActivityManager.java:7021)
	at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:561)
	at android.app.PendingIntent.getActivity(PendingIntent.java:537)
	at android.app.PendingIntent.getActivity(PendingIntent.java:501)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateAppWidget(NoteListWidget.java:44)
	at it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.onReceive(NoteListWidget.java:75)
	at android.app.ActivityThread.handleReceiver(ActivityThread.java:4896)
	... 9 more

knorx avatar Apr 01 '24 14:04 knorx

Same here, app works when widget is not present on any home screen.

App Version: 4.2.0
App Version Code: 40020090
App Flavor: play

Files App Version Code: 30280090 (PROD)

---

OS Version: 4.19.278-g7b0944645172-ab10812814(11260668)
OS API Level: 34
Device: redfin
Manufacturer: Google
Model (and Product): Pixel 5 (redfin)

---

java.lang.RuntimeException: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died, but this could also be caused by running out of binder buffer space
	at io.reactivex.internal.util.ExceptionHelper.wrapOrThrow(ExceptionHelper.java:46)
	at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:93)
	at io.reactivex.Maybe.blockingGet(Maybe.java:2321)
	at io.reactivex.Observable.blockingSingle(Observable.java:5381)
	at it.niedermann.owncloud.notes.persistence.NotesServerSyncTask.pullRemoteChanges(NotesServerSyncTask.java:219)
	at it.niedermann.owncloud.notes.persistence.NotesServerSyncTask.run(NotesServerSyncTask.java:96)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:487)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died, but this could also be caused by running out of binder buffer space
	at android.os.BinderProxy.transactNative(Native Method)
	at android.os.BinderProxy.transact(BinderProxy.java:584)
	at com.nextcloud.android.sso.aidl.IInputStreamService$Stub$Proxy.performNextcloudRequestV2(IInputStreamService.java:200)
	at com.nextcloud.android.sso.api.AidlNetworkRequest.performAidlNetworkRequestV2(AidlNetworkRequest.java:234)
	at com.nextcloud.android.sso.api.AidlNetworkRequest.performNetworkRequestV2(AidlNetworkRequest.java:181)
	at com.nextcloud.android.sso.api.NextcloudAPI.performNetworkRequestV2(NextcloudAPI.java:165)
	at com.nextcloud.android.sso.api.NextcloudAPI.lambda$performRequestObservableV2$0(NextcloudAPI.java:105)
	at com.nextcloud.android.sso.api.NextcloudAPI.$r8$lambda$2CK7Y9lXWWrtN8jgT_iNTMeTrHU(Unknown Source:0)
	at com.nextcloud.android.sso.api.NextcloudAPI$$ExternalSyntheticLambda0.subscribe(Unknown Source:6)
	at io.reactivex.internal.operators.observable.ObservableFromPublisher.subscribeActual(ObservableFromPublisher.java:31)
	at io.reactivex.Observable.subscribe(Observable.java:12284)
	at io.reactivex.internal.operators.observable.ObservableSingleMaybe.subscribeActual(ObservableSingleMaybe.java:31)
	at io.reactivex.Maybe.subscribe(Maybe.java:4290)
	at io.reactivex.Maybe.blockingGet(Maybe.java:2320)
	... 8 more

blitzdesigner avatar Apr 01 '24 16:04 blitzdesigner

@AndyScherzinger perhaps yourself or another Dev can chime into the multiple issues about this being suddenly broken for seemingly no reason? Nobody is responding thus-far into these multiple issues reported in the last few days for the same problem.

BloodyIron avatar Apr 02 '24 17:04 BloodyIron

Hi @BloodyIron

I'll check back with the other devs. Looking at the reports the issue is "simple": 4.2.0 targets Android 14 (technically speaking) hence it needs to comply to the API definition of Android 14, which according to the stack traces you all posted - it doesn't. It (still) uses a construct which is forbidden starting with Android 14.

Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.

The last report from https://github.com/nextcloud/notes-android/issues/2091#issuecomment-2030067349 however is not related and I would expect that one to also happen on pre-4.2.0.

So looping in @tobiasKaminsky @alperozturk96

And additionally for a potential "quick hint" @stefan-niedermann

AndyScherzinger avatar Apr 02 '24 18:04 AndyScherzinger

quick hint: check the intents, especially the ones in the widgets. there is some kind of compat method each intent is wrapped with. I remember I extracted flags related to implicity (as the stacktrace says) and wrapped them in this util method. Probably the roor cause is there...

stefan-niedermann avatar Apr 02 '24 18:04 stefan-niedermann

This one maybe: https://github.com/nextcloud/notes-android/blob/main/app/src/main/java/it/niedermann/owncloud/notes/shared/util/WidgetUtil.java#L32

stefan-niedermann avatar Apr 02 '24 18:04 stefan-niedermann

Hi @BloodyIron

I'll check back with the other devs. Looking at the reports the issue is "simple": 4.2.0 targets Android 14 (technically speaking) hence it needs to comply to the API definition of Android 14, which according to the stack traces you all posted - it doesn't. It (still) uses a construct which is forbidden starting with Android 14.

Targeting U+ (version 34 and above) disallows creating or retrieving a PendingIntent with FLAG_MUTABLE, an implicit Intent within and without FLAG_NO_CREATE and FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT for security reasons. To retrieve an already existing PendingIntent, use FLAG_NO_CREATE, however, to create a new PendingIntent with an implicit Intent use FLAG_IMMUTABLE.

The last report from #2091 (comment) however is not related and I would expect that one to also happen on pre-4.2.0.

So looping in @tobiasKaminsky @alperozturk96

And additionally for a potential "quick hint" @stefan-niedermann

Thanks for your help!!! \o/

BloodyIron avatar Apr 02 '24 18:04 BloodyIron

Working on it now.

tobiasKaminsky avatar Apr 04 '24 13:04 tobiasKaminsky

Fix is here: https://github.com/nextcloud/notes-android/pull/2115

tobiasKaminsky avatar Apr 04 '24 13:04 tobiasKaminsky

Hm. Now no crash, but clicking on a widget leads to:

Cannot send pending intent due to unknown exception: 
                                                                                                    android.content.ActivityNotFoundException: No Activity found to handle null
                                                                                                    	at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2239)
                                                                                                    	at android.app.Activity.startIntentSenderForResultInner(Activity.java:5978)
                                                                                                    	at android.app.Activity.startIntentSenderForResult(Activity.java:5941)
                                                                                                    	at com.android.launcher3.Launcher.startIntentSenderForResult(Unknown Source:5)
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepLauncher.startIntentSenderForResult(Unknown Source:30)
                                                                                                    	at android.app.Activity.startIntentSender(Activity.java:6139)
                                                                                                    	at android.widget.RemoteViews.startPendingIntent(RemoteViews.java:6776)
                                                                                                    	at com.android.launcher3.uioverrides.QuickstepInteractionHandler.onInteraction(Unknown Source:163)
                                                                                                    	at android.appwidget.AppWidgetHostView.lambda$getHandler$1(AppWidgetHostView.java:896)
                                                                                                    	at android.appwidget.AppWidgetHostView.$r8$lambda$27ZsoZ6qNW9ni4kzs1fvJKcTffM(Unknown Source:0)
                                                                                                    	at android.appwidget.AppWidgetHostView$$ExternalSyntheticLambda0.onInteraction(Unknown Source:4)
                                                                                                    	at android.widget.RemoteViews$RemoteResponse.handleViewInteraction(RemoteViews.java:6676)
                                                                                                    	at android.widget.RemoteViews$RemoteResponse.-$$Nest$mhandleViewInteraction(Unknown Source:0)
                                                                                                    	at android.widget.RemoteViews$SetPendingIntentTemplate.lambda$apply$0(RemoteViews.java:856)
                                                                                                    	at android.widget.RemoteViews$SetPendingIntentTemplate.$r8$lambda$_fZDtXee99gPNbrHJWWvsioH0SQ(Unknown Source:0)
                                                                                                    	at android.widget.RemoteViews$SetPendingIntentTemplate$$ExternalSyntheticLambda0.onItemClick(Unknown Source:8)
                                                                                                    	at android.widget.AdapterView.performItemClick(AdapterView.java:330)
                                                                                                    	at android.widget.AbsListView.performItemClick(AbsListView.java:1265)
                                                                                                    	at android.widget.AbsListView$PerformClick.run(AbsListView.java:3278)
                                                                                                    	at android.widget.AbsListView$3.run(AbsListView.java:4244)
                                                                                                    	at android.os.Handler.handleCallback(Handler.java:958)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:205)
                                                                                                    	at android.os.Looper.loop(Looper.java:294)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:8177)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

tobiasKaminsky avatar Apr 04 '24 13:04 tobiasKaminsky

Seems to be a 14+ problem, as this works on 10.

tobiasKaminsky avatar Apr 04 '24 13:04 tobiasKaminsky

Happens also on Android Files.

tobiasKaminsky avatar Apr 04 '24 13:04 tobiasKaminsky

What I debugged over the last two hours:

  • it works with Android 10
  • Android 14 does not work with PendingIntent.getActivity(…), but with PendingIntent.getBroadcast(…)
  • however then still setOnClickFillInIntent is not used correctly, so we cannot pass any info about the clicked element

tobiasKaminsky avatar Apr 05 '24 07:04 tobiasKaminsky

Fix is here: #2115

Now if the fix is verified, we need a release ;)

BloodyIron avatar Apr 05 '24 19:04 BloodyIron

Now if the fix is verified, we need a release ;)

@BloodyIron see https://github.com/nextcloud/notes-android/issues/2091#issuecomment-2039176557 reads to me as step one is fixed now it fails at step 2

AndyScherzinger avatar Apr 11 '24 13:04 AndyScherzinger

Pinning due to the high number of duplicates reported.

strugee avatar Apr 12 '24 23:04 strugee

I got an app update a few days ago, looks like the app doesn't crash anymore but the widget is still unusable (does not respond to clicks). The notes list is well displayed into the widget, but can't click on them...

YannBirba avatar Apr 21 '24 08:04 YannBirba

@YannBirba yes, that is correct and still a bit unfortunate. @tobiasKaminsky has been able to prevent the crashes but reacting to the clicks still needs further investigation but we decided it is better to release it already to remove the crashing as a first step.

AndyScherzinger avatar Apr 21 '24 08:04 AndyScherzinger

@YannBirba yes, that is correct and still a bit unfortunate. @tobiasKaminsky has been able to prevent the crashes but reacting to the clicks still needs further investigation but we decided it is better to release it already to remove the crashing as a first step.

Yeah ofc, thx for that.

YannBirba avatar Apr 21 '24 08:04 YannBirba

Really looking forward to this being fixed, the widget is very useful for my daily workflow! :) Thanks for those working on fixing it!

BloodyIron avatar Apr 25 '24 17:04 BloodyIron

@AndyScherzinger since the 4.3.0 milestones have no open issues attached, can we please have a new release? This fix was a month ago and I'm still waiting for it to land on my phone so I can use the lists widget again.

BloodyIron avatar Jun 18 '24 16:06 BloodyIron

@BloodyIron this needs to be done by @tobiasKaminsky I do not have any access to publish a new release. I know though that RCs are out, so if you go to the Play store and register for the beta program on the app you would get the release with the fixes already.

AndyScherzinger avatar Jun 19 '24 14:06 AndyScherzinger