MediaGalleryPreviewActivity crashes on Android 13: NPE Class.isInterface() in typed getParcelableExtra
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Apri MediaGalleryPreviewActivity.kt ed esamina le letture tipizzate di Parcelable di Intent e Bundle descritte nel report. Confronta la loro gestione dei livelli API con IntentCompat.getParcelableExtra e BundleCompat.getParcelable, quindi verifica il comportamento di compatibilità di AndroidX per API 33. L’issue è risolta quando l’anteprima si apre su Android 13 senza l’arresto anomalo segnalato e le letture dello stato salvato usano getter compatibili.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
MediaGalleryPreviewActivity crashes on Android 13 (API 33) while reading its intent extras, with no app code in the stack:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
at java.lang.Class.isAssignableFrom(Class.java:874)
at android.os.Parcel.readParcelableCreatorInternal(Parcel.java:4875)
at android.os.Parcel.readParcelableInternal(Parcel.java:4788)
at android.os.Parcel.readValue(Parcel.java:4554)
at android.os.Parcel.readValue(Parcel.java:4334)
at android.os.Parcel.-$$Nest$mreadValue(Unknown Source)
at android.os.Parcel$LazyValue.apply(Parcel.java:4432)
at android.os.Parcel$LazyValue.apply(Parcel.java:4391)
at android.os.BaseBundle.getValueAt(BaseBundle.java:394)
at android.os.BaseBundle.getValue(BaseBundle.java:374)
at android.os.BaseBundle.getValue(BaseBundle.java:357)
at android.os.BaseBundle.get(BaseBundle.java:696)
at android.os.Bundle.getParcelable(Bundle.java:947)
at android.content.Intent.getParcelableExtra(Intent.java:8930)
at io.getstream.chat.android.compose.ui.attachments.preview.MediaGalleryPreviewActivity.onCreate$lambda$13(MediaGalleryPreviewActivity.kt)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:122)
...
The private helper Intent.getParcelable<T>(key) in MediaGalleryPreviewActivity switches to the typed getParcelableExtra(key, T::class.java) from Build.VERSION_CODES.TIRAMISU. The typed Intent/Bundle getters have a known platform bug on API 33 that throws exactly this NPE inside Parcel.readParcelableCreatorInternal; it is fixed in API 34. That is why androidx.core.content.IntentCompat.getParcelableExtra / BundleCompat.getParcelable only use the typed API from UPSIDE_DOWN_CAKE and fall back to the untyped call on 33.
Suggested fix: replace the helper with IntentCompat.getParcelableExtra(intent, key, T::class.java) (or raise the version check to Build.VERSION_CODES.UPSIDE_DOWN_CAKE). The same pattern applies to the Bundle reads from savedInstanceState.
The file is identical in 7.13.0, 7.18.0 and develop, so the crash is still present in the latest release.
SDK version
stream-chat-android-compose7.13.0 (code unchanged up to 7.18.0 /develop)
To Reproduce
Not reproducible on demand: it is a platform race in the Android 13 typed Parcel API. Observed in production:
- Open a channel containing an image attachment
- Tap the image to open
MediaGalleryPreviewActivity - The activity crashes during the first composition
Expected behavior
The media gallery preview opens without crashing on Android 13.
Device:
- Vendor and model: Xiaomi Redmi Note 11 (2201117TY)
- Android version: 13 (TKQ1.221114.001)
Screenshots
N/A
- Lingua principale
- Kotlin
- Stelle
- 1.7k
- Fork
- 321
- Merge medio
- 19h 57m
- PR unite (30g)
- 167
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di GetStream/stream-chat-android
-
feature request
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
GetStream/stream-chat-android#6556 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Add Sort Order Support for Media and Files Attachments Lists in Channel InfoForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertafeature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
GetStream/stream-chat-android#6359 ·
I maintainer di solito rispondono entro 1 giorno
-
feature request
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
GetStream/stream-chat-android#6243 ·
I maintainer di solito rispondono entro 1 giorno
-
Unable to wrap ChannelList height due to internal LazyColumn .fillMaxSize()Forse di nuovo libera @Ahmetkaragunlu l’ha presa 19 giorni fa e non c’è nessuna pull request aperta. Apertacompose feature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
GetStream/stream-chat-android#5612 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Should Support Larger fileApertacore feature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
GetStream/stream-chat-android#5279 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di GetStream/stream-chat-android
Issue simili
-
unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
thunderbird/thunderbird-android#11893 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
Droid-Deck/DroidDeck#2198 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
world-federation-of-advertisers/cross-media-measurement#4846 ·
I maintainer di solito rispondono entro 1 giorno
-
autoteam community connectors/destination/mssql connectors/source/hubspot team/use
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
airbytehq/airbyte#91201 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug javascript
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno