nextcloud / nextcloud/android

App crashes on launch: `ArrayIndexOutOfBoundsException` in `AvatarGroupLayout.showFederatedShareAvatar()`

Open
#11,902 3 comments 0 reactions 0 assignees View on GitHub
bug performance: misc
Dominant language
Kotlin
Stars
5.6k
Forks
2k
Avg merge
2d 18h
Merged PRs (30d)
92

Description

### ⚠️ Before posting ⚠️

- [X] This is a **bug**, not a question or an enhancement.
- [X] I've [searched for similar issues](https://github.com/nextcloud/android/issues) and didn't find a duplicate.
- [X] I've written a clear and descriptive title for this issue, not just "Bug" or "Crash".
- [X] I agree to follow Nextcloud's [Code of Conduct](https://nextcloud.com/contribute/code-of-conduct/).

### Steps to reproduce

1. Launch the app

### Expected behaviour

App starts

### Actual behaviour

App crashes at launch and brings up the error log.

### Android version

8.0.0

### Device brand and model

SHIFT SHIFT6m

### Stock or custom OS?

Custom (explain in "additional information")

### Nextcloud android app version

3.25.0

### Nextcloud server version

27.0.2

### Using a reverse proxy?

No

### Android logs

```java
Cause of error

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.owncloud.android.ui.AvatarGroupLayout.showFederatedShareAvatar(AvatarGroupLayout.java:162)
at com.owncloud.android.ui.AvatarGroupLayout.setAvatars(AvatarGroupLayout.java:124)
at com.owncloud.android.ui.adapter.OCFileListAdapter.bindListItemViewHolder(OCFileListAdapter.java:413)
at com.owncloud.android.ui.adapter.OCFileListAdapter.onBindViewHolder(OCFileListAdapter.java:383)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7678)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7761)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6582)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6848)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6688)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6684)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1662)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4604)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4307)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4873)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:689)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1117)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1921)
at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1910)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1676)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43)
at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:2376)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:918)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1263)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1921)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1765)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1674)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:340)
at android.widget.FrameLayout.onLayout(FrameLayout.java:278)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:780)
at android.view.View.layout(View.java:19913)
at android.view.ViewGroup.layout(ViewGroup.java:6211)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2851)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2513)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1602)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7407)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:948)
at android.view.Choreographer.doCallbacks(Choreographer.java:750)
at android.view.Choreographer.doFrame(Choreographer.java:682)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:934)
at android.os.Handler.handleCallback(Handler.java:869)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:206)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845)
```

### App information
- ID: com.nextcloud.client
- Version: 30250090
- Build flavor: generic

### Device information
- Brand: SHIFT
- Device: SHIFT6m
- Model: SHIFT6m
- Id: ******
- Product: SHIFT6m_EEA

### Firmware
- SDK: 26
- Release: 8.0.0
- Incremental: 1566905523

### Server error logs

_No response_

### Additional information

OS: ShiftOS-L (degoogled)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.