diff --git a/client/src/main/aidl/net/i2p/android/router/service/IRouterState.aidl b/client/src/main/aidl/net/i2p/android/router/service/IRouterState.aidl index 92bc3f3219255ae041d25f48a8ed05339ea4c5d4..bc20ece797a2b5f2140f76583cfd5109ecdfff10 100644 --- a/client/src/main/aidl/net/i2p/android/router/service/IRouterState.aidl +++ b/client/src/main/aidl/net/i2p/android/router/service/IRouterState.aidl @@ -27,8 +27,13 @@ interface IRouterState { boolean isStarted(); /** - * Get the state of the I2P router - **/ + * Get the state of the I2P router. + * + * @return null if the State is not known, e.g. a new state has been added + * to State.aidl in I2P Android. Client app devs should update their client + * library, or their copy of State.aidl, if they are getting null States. + * Future State.aidl versions will be backwards-compatible. + */ State getState(); } diff --git a/client/src/main/aidl/net/i2p/android/router/service/IRouterStateCallback.aidl b/client/src/main/aidl/net/i2p/android/router/service/IRouterStateCallback.aidl index 5158ce44ebcc511f753a0554f504ac12ba9ab8b3..0397618c56bc6583259fef39a6ea7f25362a375a 100644 --- a/client/src/main/aidl/net/i2p/android/router/service/IRouterStateCallback.aidl +++ b/client/src/main/aidl/net/i2p/android/router/service/IRouterStateCallback.aidl @@ -9,7 +9,10 @@ import net.i2p.android.router.service.State; */ oneway interface IRouterStateCallback { /** - * Called when the state of the I2P router changes + * Called when the state of the I2P router changes. + * + * @param newState may be null if the State is not known. See + * {@link net.i2p.android.router.service.IRouterState#getState()}. */ void stateChanged(in State newState); } diff --git a/client/src/main/java/net/i2p/android/router/service/State.java b/client/src/main/java/net/i2p/android/router/service/State.java index 46916596634ff6464d845aaa6d6fb19cbda91652..148016e6ead15322190f0101aa479a6bde3718ba 100644 --- a/client/src/main/java/net/i2p/android/router/service/State.java +++ b/client/src/main/java/net/i2p/android/router/service/State.java @@ -34,7 +34,12 @@ public enum State implements Parcelable { public static final Creator<State> CREATOR = new Creator<State>() { @Override public State createFromParcel(final Parcel source) { - return State.valueOf(source.readString()); + try { + return State.valueOf(source.readString()); + } catch (IllegalArgumentException e) { + // Parcel is from a newer version of State with new states. + return null; + } } @Override