OneSignal-Android-SDK
OneSignal-Android-SDK copied to clipboard
[Bug]: Crash when call promptForPushNotifications, NullPointerException
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
- [X] I agree to follow this project's Code of Conduct
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!
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)
Hi @Kppro, from the stack trace it looks like you might be calling
OneSignal.promptForPushNotificationsbefore initializing viaOneSignal.initWithContext. Can you confirm where you are callingOneSignal.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)
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
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

the same bug is present for the ionic sdk too
Updates?
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 ?
Привет, я подписался на эту проблему, потому что у меня была похожая проблема, но с другим SDK (реактивным). Я думаю, что у меня это заработало, обновив targetSdkVersion до 33 (которое было установлено на 31) в build.gradle. Возможно, вы могли бы попробовать и посмотреть, работает ли это и для вас?
buildToolsVersion = "33.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33
the error is still there
Has anyone been able to reproduce this issue in their project?
Any update on this?
Running into this as well. Has anyone been able to get a workaround to work?
same issue here
Same issue here on Flutter SDK
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!