diff --git a/briar-android/src/net/sf/briar/android/helloworld/HelloWorldActivity.java b/briar-android/src/net/sf/briar/android/helloworld/HelloWorldActivity.java index e253024c6064978ea7d1cc29fc57576c2c5d3fc2..618160bc6cf12ca20230e4bf8d7a4ca17fe1c69f 100644 --- a/briar-android/src/net/sf/briar/android/helloworld/HelloWorldActivity.java +++ b/briar-android/src/net/sf/briar/android/helloworld/HelloWorldActivity.java @@ -8,9 +8,13 @@ import static java.util.logging.Level.INFO; import java.util.logging.Logger; +import com.google.inject.Inject; +import com.google.inject.Provider; + import net.sf.briar.R; import net.sf.briar.android.BriarService; import net.sf.briar.android.invitation.AddContactActivity; +import net.sf.briar.api.android.BundleEncrypter; import roboguice.activity.RoboActivity; import android.content.Intent; import android.os.Bundle; @@ -27,8 +31,14 @@ implements OnClickListener { private static final Logger LOG = Logger.getLogger(HelloWorldActivity.class.getName()); + @Inject private static Provider<BundleEncrypter> bundleEncrypterProvider; + + private final BundleEncrypter bundleEncrypter = + bundleEncrypterProvider.get(); + @Override public void onCreate(Bundle state) { + if(state != null && !bundleEncrypter.decrypt(state)) state = null; super.onCreate(state); if(LOG.isLoggable(INFO)) LOG.info("Created"); LinearLayout layout = new LinearLayout(this); @@ -60,6 +70,18 @@ implements OnClickListener { startService(new Intent(BriarService.class.getName())); } + @Override + public void onRestoreInstanceState(Bundle state) { + if(bundleEncrypter.decrypt(state)) + super.onRestoreInstanceState(state); + } + + @Override + public void onSaveInstanceState(Bundle state) { + super.onSaveInstanceState(state); + bundleEncrypter.encrypt(state); + } + @Override public void onDestroy() { super.onDestroy(); diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java index 4b25d2a8949507fde50c1656a256a74ca5f5e8fd..bc229df0385b42f3d6680f4fc40a4db4a6aa7338 100644 --- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java +++ b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java @@ -53,13 +53,13 @@ implements InvitationListener { @Override public void onCreate(Bundle state) { - if(state == null || !bundleEncrypter.decrypt(state)) { - // This is a new activity or the process has restarted - super.onCreate(null); + if(state != null && !bundleEncrypter.decrypt(state)) state = null; + super.onCreate(state); + if(state == null) { + // This is a new activity or the app has restarted setView(new NetworkSetupView(this)); } else { // Restore the activity's state - super.onCreate(state); networkName = state.getString("net.sf.briar.NETWORK_NAME"); useBluetooth = state.getBoolean("net.sf.briar.USE_BLUETOOTH"); taskHandle = state.getLong("net.sf.briar.TASK_HANDLE", -1);