react-native-system-navigation-bar icon indicating copy to clipboard operation
react-native-system-navigation-bar copied to clipboard

SetModeStyle - Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference

Open SanKlein opened this issue 1 year ago • 3 comments

Description

Hi, thank you for the great library. Only way I was able to set the theme in the Android app status bar and navigation bar.

I am running into this crash lately.

I am calling this in my code: SystemNavigationBar && SystemNavigationBar.setBarMode && SystemNavigationBar.setBarMode(isDarkMode ? 'light' : 'dark');

I added the checks because I wanted to see if that would fix it, but it did not.

Here is the crash I am seeing:

Fatal Exception: java.lang.NullPointerException Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference com.reactnativesystemnavigationbar.SystemNavigationBarModule.setModeStyle (SystemNavigationBarModule.java:472) com.reactnativesystemnavigationbar.SystemNavigationBarModule.lambda$setModeStyle$8$SystemNavigationBarModule (SystemNavigationBarModule.java:521) com.reactnativesystemnavigationbar.-$$Lambda$SystemNavigationBarModule$7c9Wq1aEzZlZVxbqz80nWTlUwis.run (Unknown Source:8) android.os.Handler.handleCallback (Handler.java:942)

I am not able to reproduce the issue, but I am seeing it in crashlytics.

Here are some of the devices it is happening on: Android 14 Pixel 6 Android 14 Galaxy S22 Android 13 Oppo Reno8 5G Android 11 Realme C3 Android 10 Galaxy Note9 Android 10 Note3

Please let me know if there is anything else that would be helpful. Thank you!

react-native-system-navigation-bar version

2.6.3

React Native version

0.62.2

Snack, code example, screenshot, or link to a repository

import SystemNavigationBar from 'react-native-system-navigation-bar';

SystemNavigationBar && SystemNavigationBar.setBarMode && SystemNavigationBar.setBarMode(isDarkMode ? 'light' : 'dark');

SanKlein avatar Jan 16 '24 17:01 SanKlein

Hi @SanKlein, I released a new version. Can you check again in the latest version?

kadiraydinli avatar Feb 01 '24 18:02 kadiraydinli

@kadiraydinli Hi, it still happens on version 2.6.4, the crashes I got are from Android 11,12,13,14.

stacktrace:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.setModeStyle(SystemNavigationBarModule.java:474)
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.lambda$setNavigationColor$1(SystemNavigationBarModule.java:260)
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.$r8$lambda$2vOhle1R4mCvq8Qvlxo7ugiWWaI(Unknown)
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule$$ExternalSyntheticLambda4.run(Unknown:12)
        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.app.ActivityThread.main(ActivityThread.java:8893)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)

maybe something like this could get around the crash:

  private void setModeStyle(Boolean light, Integer bar) {
    Activity currentActivity = getCurrentActivity();
    if (currentActivity == null) {
      return;
    }
    
    int visibility = 0;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    ...

efstathiosntonas avatar Mar 12 '24 09:03 efstathiosntonas

Normally, I replicated the issue and then fixed it and raised the PR, this issue should not arise. I think the fix by @efstathiosntonas will work

HarshitMadhav avatar Jun 24 '24 06:06 HarshitMadhav