Merge branch '1421-contact-list-during-migration' into 'master'

Don't start BriarActivities when lifecycle did not start

Closes #1421

See merge request briar/briar!1058
This commit is contained in:
akwizgran
2019-03-26 14:25:10 +00:00
2 changed files with 22 additions and 11 deletions

View File

@@ -261,8 +261,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
b.setContentText(appContext.getText(text));
b.setWhen(0); // Don't show the time
b.setOngoing(true);
Intent i = new Intent(appContext, NavDrawerActivity.class);
i.setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);
Intent i = new Intent(appContext, SplashScreenActivity.class);
b.setContentIntent(PendingIntent.getActivity(appContext, 0, i, 0));
if (SDK_INT >= 21) {
b.setCategory(CATEGORY_SERVICE);

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.android.splash;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
@@ -8,6 +9,8 @@ import android.support.v7.preference.PreferenceManager;
import android.transition.Fade;
import org.briarproject.bramble.api.account.AccountManager;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
@@ -19,10 +22,15 @@ import org.briarproject.briar.api.android.LockManager;
import java.util.logging.Logger;
import javax.annotation.Nullable;
import javax.inject.Inject;
import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static org.briarproject.briar.android.TestingConstants.EXPIRY_DATE;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class SplashScreenActivity extends BaseActivity {
private static final Logger LOG =
@@ -36,7 +44,7 @@ public class SplashScreenActivity extends BaseActivity {
protected AndroidExecutor androidExecutor;
@Override
public void onCreate(Bundle state) {
public void onCreate(@Nullable Bundle state) {
super.onCreate(state);
if (Build.VERSION.SDK_INT >= 21) {
@@ -48,16 +56,14 @@ public class SplashScreenActivity extends BaseActivity {
setContentView(R.layout.splash);
if (accountManager.hasDatabaseKey()) {
Intent i;
if (lockManager.isLocked()) {
// The database needs to be opened for the app to be locked.
// Start main activity right away. It will open UnlockActivity.
// Otherwise, we would end up with two screen unlock inputs.
i = new Intent(this, NavDrawerActivity.class);
startNextActivity(NavDrawerActivity.class);
} else {
i = new Intent(this, OpenDatabaseActivity.class);
startNextActivity(OpenDatabaseActivity.class);
}
startActivity(i);
finish();
} else {
new Handler().postDelayed(() -> {
@@ -72,22 +78,28 @@ public class SplashScreenActivity extends BaseActivity {
component.inject(this);
}
protected void startNextActivity() {
private void startNextActivity() {
if (System.currentTimeMillis() >= EXPIRY_DATE) {
LOG.info("Expired");
startActivity(new Intent(this, ExpiredActivity.class));
startNextActivity(ExpiredActivity.class);
} else {
if (accountManager.accountExists()) {
LOG.info("Account exists");
startActivity(new Intent(this, OpenDatabaseActivity.class));
startNextActivity(OpenDatabaseActivity.class);
} else {
LOG.info("Account does not exist");
accountManager.deleteAccount();
startActivity(new Intent(this, SetupActivity.class));
startNextActivity(SetupActivity.class);
}
}
}
private void startNextActivity(Class<? extends Activity> activityClass) {
Intent i = new Intent(this, activityClass);
i.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
private void setPreferencesDefaults() {
androidExecutor.runOnBackgroundThread(() ->
PreferenceManager.setDefaultValues(SplashScreenActivity.this,