Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: Crash when call promptForPushNotifications, NullPointerException #1664

Closed
1 task done
Kppro opened this issue Oct 10, 2022 · 15 comments
Closed
1 task done

[Bug]: Crash when call promptForPushNotifications, NullPointerException #1664

Kppro opened this issue Oct 10, 2022 · 15 comments

Comments

@Kppro
Copy link

Kppro commented Oct 10, 2022

What happened?

Crashs at our app startup on Pixels devices with Android 13 and latest release of onesignal sdk (4.8.2)

Steps to reproduce?

When users running Pixels devices with android 13 launch our app

What did you expect to happen?

I expected no crash when calling promptForPushNotifications on an android 13 device

OneSignal Android SDK version

Release 4.8.2

Android version

13

Specific Android models

Google Pixels devices

Relevant log output

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
       at com.onesignal.OSUtils.getTargetSdkVersion(OSUtils.java:490)
       at com.onesignal.NotificationPermissionController.<clinit>(NotificationPermissionController.kt:48)
       at com.onesignal.OneSignal.promptForPushNotifications(OneSignal.java:2864)
       at com.deleev.labellevie.ui.MainActivity.onResume(MainActivity.kt:455)
       at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1564)
       at android.app.Activity.performResume(Activity.java:8437)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4763)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4806)
       at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:54)
       at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:201)
       at android.os.Looper.loop(Looper.java:288)
       at android.app.ActivityThread.main(ActivityThread.java:7872)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
       
       
       Fatal Exception: java.lang.ExceptionInInitializerError
       at com.onesignal.OneSignal.promptForPushNotifications(OneSignal.java:2864)
       at com.deleev.labellevie.ui.MainActivity.onResume(MainActivity.kt:455)
       at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1564)
       at android.app.Activity.performResume(Activity.java:8437)
       at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4763)
       at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4806)
       at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:54)
       at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loopOnce(Looper.java:201)
       at android.os.Looper.loop(Looper.java:288)
       at android.app.ActivityThread.main(ActivityThread.java:7872)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Code of Conduct

  • I agree to follow this project's Code of Conduct
@Kppro Kppro changed the title [Bug]: CRASH NullPointerException [Bug]: Crash NullPointerException Oct 10, 2022
@brismithers
Copy link
Contributor

Hi @Kppro, from the stack trace it looks like you might be calling OneSignal.promptForPushNotifications before initializing via OneSignal.initWithContext. Can you confirm where you are calling OneSignal.initWithContext ? Thanks!

@rafaz182
Copy link

rafaz182 commented Oct 14, 2022

I'm having a simillar log as him. My initialization occurs when I build my dependency graph (probably a little after application create). I tried change it to Application.onCreate() but still receiving this exception.
To reproduce it, just swipe up the application from recent apps.

2022-10-14 19:08:48.079 E/WM-WorkerWrapper: Work [ id=, tags={ FOCUS_LOST_WORKER_TAG, com.onesignal.OSFocusHandler$OnLostFocusWorker } ] failed because it threw an exception/error
    java.util.concurrent.ExecutionException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
        at java.lang.Thread.run(Thread.java:1012)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
        at com.onesignal.OSUtils.packageInstalledAndEnabled(OSUtils.java:275)
        at com.onesignal.OSUtils.isGMSInstalledAndEnabled(OSUtils.java:288)
        at com.onesignal.OSUtils.supportsGooglePush(OSUtils.java:330)
        at com.onesignal.OSUtils.getDeviceType(OSUtils.java:349)
        at com.onesignal.OSUtils.isAndroidDeviceType(OSUtils.java:371)
        at com.onesignal.LocationController.isGooglePlayServicesAvailable(LocationController.java:337)
        at com.onesignal.LocationController.onFocusChange(LocationController.java:325)
        at com.onesignal.OneSignal.onAppLostFocus(OneSignal.java:1352)
        at com.onesignal.OSFocusHandler$Companion.onLostFocusDoWork(OSFocusHandler.kt:139)
        at com.onesignal.OSFocusHandler$OnLostFocusWorker.doWork(OSFocusHandler.kt:118)
        at androidx.work.Worker$1.run(Worker.java:86)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
        at java.lang.Thread.run(Thread.java:1012) 

@Kppro
Copy link
Author

Kppro commented Oct 15, 2022

Hi @Kppro, from the stack trace it looks like you might be calling OneSignal.promptForPushNotifications before initializing via OneSignal.initWithContext. Can you confirm where you are calling OneSignal.initWithContext ? Thanks!

Hi @brismithers , I am calling OneSignal.initWithContext in the application onCreate and the crash happens in the MainActivity.onResume (and it's not even my first activity on app startup, there is a LauncherActivity).
We didn't had similar crashes before with the way OneSignal is initialized in the app. This crash just started to appear in our last release when I added the promptForPushNotifications to support android 13.

I did multiple test with the emulator but wasn't able to reproduce and I don't have a pixel device at the moment. (but maybe we only see pixels device because they are the first ones with the android 13 update)

@jkasten2 jkasten2 changed the title [Bug]: Crash NullPointerException [Bug]: Crash when call promptForPushNotifications, NullPointerException Dec 1, 2022
@DaFaack
Copy link

DaFaack commented Dec 31, 2022

I'm having the same problem but on multiple android versions.
All I do is calling:

        OneSignal.initWithContext(this)
        OneSignal.setAppId("myappid")
        OneSignal.promptForPushNotifications()

in my onCreate() but I get a lot of crashes from my users

Here is my crash log:

Exception java.lang.RuntimeException:
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3473)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3637)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2105)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:223)
  at android.app.ActivityThread.main (ActivityThread.java:7703)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:612)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:997)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewTreeObserver android.view.View.getViewTreeObserver()' on a null object reference
  at androidx.core.splashscreen.SplashScreen$Impl.setKeepOnScreenCondition (SplashScreen.java)
  at com.onesignal.OneSignal.promptForPushNotifications (OneSignal.java)
  at android.app.Activity.performCreate (Activity.java:8000)
  at android.app.Activity.performCreate (Activity.java:7984)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1309)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3446)

the crash happens mainly on Redmi smartphones

@esentis
Copy link

esentis commented Jan 19, 2023

Same error occured and caught by Sentry for Pixel XL device (Pixel 4 XL (TP1A.221005.002)) :

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
    at com.onesignal.OSUtils.o(OSUtils.java:1)
    at com.onesignal.l0.<clinit>(NotificationPermissionController.kt:4)
    at com.onesignal.d3.D1(OneSignal.java:1)
    at com.onesignal.flutter.OneSignalPlugin.J(OneSignalPlugin.java:2)
    at com.onesignal.flutter.OneSignalPlugin.onMethodCall(OneSignalPlugin.java:16)
    at xi.k$a.a(MethodChannel.java:2)
    at ki.c.l(DartMessenger.java:2)
    at ki.c.m(DartMessenger.java:2)
    at ki.c.i
    at ki.b.run
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7898)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
java.lang.ExceptionInInitializerError: null
    at com.onesignal.d3.D1(OneSignal.java:1)
    at com.onesignal.flutter.OneSignalPlugin.J(OneSignalPlugin.java:2)
    at com.onesignal.flutter.OneSignalPlugin.onMethodCall(OneSignalPlugin.java:16)
    at xi.k$a.a(MethodChannel.java:2)
    at ki.c.l(DartMessenger.java:2)
    at ki.c.m(DartMessenger.java:2)
    at ki.c.i
    at ki.b.run
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7898)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
    

Also attaching screens from Sentry
Screenshot 2023-01-19 at 2 46 35 PM

Screenshot 2023-01-19 at 2 46 26 PM

@marshall86
Copy link

the same bug is present for the ionic sdk too

@MrNapcae
Copy link

Updates?

@mbody
Copy link

mbody commented Apr 13, 2023

Hi, I subscribed to this issue because I had similar issue but on another SDK (react-native).
I think I got it working by updating the targetSdkVersion to 33 (which was set to 31) in the build.gradle
You could maybe try and see if this works for you too ?

@MrNapcae
Copy link

Привет, я подписался на эту проблему, потому что у меня была похожая проблема, но с другим SDK (реактивным). Я думаю, что у меня это заработало, обновив targetSdkVersion до 33 (которое было установлено на 31) в build.gradle. Возможно, вы могли бы попробовать и посмотреть, работает ли это и для вас?

buildToolsVersion = "33.0.0"
minSdkVersion = 21
compileSdkVersion = 33
targetSdkVersion = 33

the error is still there

@emawby
Copy link
Contributor

emawby commented Apr 13, 2023

Has anyone been able to reproduce this issue in their project?

@jpacyfik
Copy link

Any update on this?

@tavosansal
Copy link

Running into this as well. Has anyone been able to get a workaround to work?

@Ozaoujal
Copy link

Ozaoujal commented Sep 5, 2023

same issue here

@SamedHrmn
Copy link

Same issue here on Flutter SDK

@jennantilla
Copy link
Contributor

Hello everyone! Apologies that this issue has gone stale. Much of our work in the last few quarters have been on a new major release where many improvements and enhancements are introduced. We will continue to investigate 4.x.x bugs, though we encourage you to update to our latest release as that will be the most-supported release going forward. Please see our migration guide for full details on upgrading.

If this crash is still a current concern for anyone, please let us know update reproduction steps and we will investigate further. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests