This commit addresses a NullPointerException that occurs when updating widget options in the WidgetSizes class. The fix includes: - Adding null checks for sizeOptions and currentOptions - Comparing new sizes with current sizes before updating - Catching and logging exceptions during widget option updates - Returning null from getWidgetSizeOptions if it fails to create a valid Bundle These changes should resolve the "Attempt to invoke virtual method 'void android.os.Bundle.putAll(android.os.Bundle)' on a null object reference" error and improve the robustness of widget size updates. java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putAll(android.os.Bundle)' on a null object reference at android.os.Parcel.createExceptionOrNull(Parcel.java:3075) 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 com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.updateAppWidgetOptions(IAppWidgetService.java:1017) at android.appwidget.AppWidgetManager.updateAppWidgetOptions(AppWidgetManager.java:727) at com.android.launcher3.widget.util.WidgetSizes.lambda$updateWidgetSizeRangesAsync$0(Unknown Source:31) at com.android.launcher3.widget.util.WidgetSizes.a(Unknown Source:0) at ba.a.run(Unknown Source:10) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.os.HandlerThread.run(HandlerThread.java:67) Caused by: android.os.RemoteException: Remote stack trace: at com.android.server.appwidget.AppWidgetServiceImpl.updateAppWidgetOptions(AppWidgetServiceImpl.java:2193) at com.android.internal.appwidget.IAppWidgetService$Stub.onTransact(IAppWidgetService.java:500) at android.os.Binder.execTransactInternal(Binder.java:1375) at android.os.Binder.execTransact(Binder.java:1311)
Lawnchair 15
Lawnchair is a free, open-source home app for Android. Taking Launcher3—Android’s default home app—as a starting point, it ports Pixel Launcher features and introduces rich customization options.
This branch houses the codebase of Lawnchair 15, which is currently in development and is based on Launcher3 from Android 15. For Lawnchair 9 to 14, see the branches with the 9- to 14- prefixes, respectively.
Features
- Material You Theming: Adapts to your wallpaper and system theme.
- At a Glance Widget: Displays information at a glance with support for Smartspacer extensions.
- QuickSwitch Support: Integrates with Android Recents on Android 10 and newer. (requires root)
- Global Search: Allows quick access to apps, contacts, and web results from the home screen.
- Customization Options: Provides options to tweak icons, fonts, and colors to your liking.
- And more!
Download
Lawnchair on Play Store will install as a different app from other sources. Some features may be restricted to comply with Google Play's publishing rules.
Development builds
Interested in keeping yourself up-to-date with every Lawnchair development? Try our development build!
These builds offer the latest features and bug fixes at a cost of being slower and introducing new bugs. Ensure that you make backups before installing.
Download: Obtainium • GitHub • nightly.link
Verification
Verify the integrity of your Lawnchair download using these SHA-256 hashes:
| Source | SHA-256 Hash |
|---|---|
| Anywhere | 74:7C:36:45:B3:57:25:8B:2E:23:E8:51:E5:3C:96:74:7F:E0:AD:D0:07:E5:BA:2C:D9:7E:8C:85:57:2E:4D:C5 |
| Google Play | 47:AC:92:63:1C:60:35:13:CC:8D:26:DD:9C:FF:E0:71:9A:8B:36:55:44:DC:CE:C2:09:58:24:EC:25:61:20:A7 |
Contributing
Please visit the Lawnchair Contributing Guidelines for information and tips on contributing to Lawnchair.
Quick links
You can view all our links in the Lawnchair Wiki.