Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
5.1.0
-
None
-
cordova-android 5.1.0
Description
pluginManager not being check for null before using it in CordovaInterfaceImpl
01-28 14:24:10.396 27684-27684/io.cordova.hellocordova E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: io.cordova.hellocordova, PID: 27684
java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle org.apache.cordova.PluginManager.onSaveInstanceState()' on a null object reference
at org.apache.cordova.CordovaInterfaceImpl.onSaveInstanceState(CordovaInterfaceImpl.java:173)
at org.apache.cordova.CordovaActivity.onSaveInstanceState(CordovaActivity.java:465)
at android.app.Activity.performSaveInstanceState(Activity.java:1298)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1288)
at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:3958)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3369)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3425)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Recreate
cordova create testapp
cd testapp
cordova platform add android@5.1.0
Modify MainActivity to launch a second Cordova Activity like this:
change MainActivity.java
Notice no init or loadUrl called, this is on purpose in our App for this use case we want to avoid this, and let the second Activity to call loadUrl
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
@Override
protected void onStart()
}
Add class io.cordova.hellocordova.MainActivity2.java
public class MainActivity2 extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
}
Add activity to AndroidManifest.xml
<activity android:name="io.cordova.hellocordova.MainActivity2" />
Since init() or loadUrl was never called in MainActivity, pluginManager never got created, this let pluginManager be null