From 020e4df8d97164dc14d0445d2da91df26331702f Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 19 Feb 2013 00:54:21 +0000 Subject: [PATCH] Added boilerplate bundle encryption code to HelloWorldActivity. It would be nice to be able to put this code in a superclass, since in the case of an activity like this it only deals with superclass state. --- .../helloworld/HelloWorldActivity.java | 22 +++++++++++++++++++ .../invitation/AddContactActivity.java | 8 +++---- 2 files changed, 26 insertions(+), 4 deletions(-) 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 e253024c60..618160bc6c 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 4b25d2a894..bc229df038 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); -- GitLab