NullPointerException on {ThemeableBrowser.java:670}
I've had a couple of crashes show up in my Fabric panel indicating that users are having trouble with this plugin (version 0.2.12).
The stack trace I'm getting is:
java.lang.NullPointerException
at com.initialxy.cordova.themeablebrowser.ThemeableBrowser$6$4.onClick(ThemeableBrowser.java:670)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19274)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(NativeStart.java)
Which as far as I can tell simply indicates that when the close button is being pressed, that inAppWebView.getUrl() is failing for some reason. I've not personally been able to replicate it, but I've had a couple of reports from 4.4.2 (API level 19).
I've had a few more reports since on other Android versions (5.0,4.4.4) across various devices and both Intel and ARM architectures, so it's not tied to 4.4.2 or the device.
04-18 16:47:35.468 31181 31273 E PluginManager: Uncaught exception from plugin
04-18 16:47:35.468 31181 31273 E PluginManager: java.lang.NullPointerException: Attempt to invoke virtual method 'void org.apache.cordova.CallbackContext.sendPluginResult(org.apache.cordova.PluginResult)' on a null object reference
04-18 16:47:35.468 31181 31273 E PluginManager: at com.initialxy.cordova.themeablebrowser.ThemeableBrowser.execute(ThemeableBrowser.java:243)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:117)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.apache.cordova.PluginManager.exec(PluginManager.java:132)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:57)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
04-18 16:47:35.468 31181 31273 E PluginManager: at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
04-18 16:47:35.468 31181 31273 E PluginManager: at android.os.Handler.dispatchMessage(Handler.java:102)
04-18 16:47:35.468 31181 31273 E PluginManager: at android.os.Looper.loop(Looper.java:154)
04-18 16:47:35.468 31181 31273 E PluginManager: at android.os.HandlerThread.run(HandlerThread.java:61)
04-18 16:47:35.590 31181 31181 E UncaughtException:
04-18 16:47:35.590 31181 31181 E UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Dialog.show()' on a null object reference
04-18 16:47:35.590 31181 31181 E UncaughtException: at com.initialxy.cordova.themeablebrowser.ThemeableBrowser$2.run(ThemeableBrowser.java:238)
04-18 16:47:35.590 31181 31181 E UncaughtException: at android.os.Handler.handleCallback(Handler.java:751)
04-18 16:47:35.590 31181 31181 E UncaughtException: at android.os.Handler.dispatchMessage(Handler.java:95)
04-18 16:47:35.590 31181 31181 E UncaughtException: at android.os.Looper.loop(Looper.java:154)
04-18 16:47:35.590 31181 31181 E UncaughtException: at android.app.ActivityThread.main(ActivityThread.java:6119)
04-18 16:47:35.590 31181 31181 E UncaughtException: at java.lang.reflect.Method.invoke(Native Method)
04-18 16:47:35.590 31181 31181 E UncaughtException: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
04-18 16:47:35.590 31181 31181 E UncaughtException: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
04-18 16:47:35.754 31181 31237 I CrashlyticsCore: Crashlytics report upload complete: 58F67B4A01D1-0001-79CD-0841D77BEBF3.cls
04-18 16:47:35.836 31181 31181 E AndroidRuntime: FATAL EXCEPTION: main
04-18 16:47:35.836 31181 31181 E AndroidRuntime: Process: com.test.www.development, PID: 31181
04-18 16:47:35.836 31181 31181 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Dialog.show()' on a null object reference
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at com.initialxy.cordova.themeablebrowser.ThemeableBrowser$2.run(ThemeableBrowser.java:238)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:751)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6119)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
04-18 16:47:35.836 31181 31181 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
04-18 16:47:35.842 4911 27541 W ActivityManager: Force finishing activity com.test.www.development/.MainActivity
@davidsharp
I've experienced this exactly same issue.
For me it happens like this:
- click link to PDF file in web page
- detect click (using browser.executeScript)
- prevent navigation, but open file with file-opener plugin instead (starts new intent on top of browser)
- when return from file-opener and click exit from browser this crash happens
I noticed that this happens every time the underlying CordovaActivity is paused by Android. It could happen for example by just switching to some other app and then coming back again.
any workaround?