Fix some rare crashes when restoring the app after termination

Also fixes an issue where the app shortcuts would not work for unencrypted vaults
This commit is contained in:
Alexander Bakker 2019-04-08 23:13:11 +02:00
parent 6d93b78f9a
commit 0563ac917a
5 changed files with 25 additions and 20 deletions

View file

@ -1,5 +1,6 @@
package com.beemdevelopment.aegis.ui;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
@ -18,6 +19,15 @@ public abstract class AegisActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
_app = (AegisApplication) getApplication();
// if the app was killed, relaunch MainActivity and close everything else
if (!(this instanceof MainActivity) && !(this instanceof AuthActivity) && _app.getDatabaseManager().isLocked()) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return;
}
// set FLAG_SECURE on the window of every AegisActivity
if (getPreferences().isSecureScreenEnabled()) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

View file

@ -114,9 +114,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
super.onNewIntent(intent);
setIntent(intent);
if (!doShortcutActions() || _db.isLocked()) {
unlockDatabase(null);
}
doShortcutActions();
}
@Override
@ -305,15 +303,11 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
startActivityForResult(scannerActivity, CODE_SCAN);
}
private boolean doShortcutActions() {
// return false if an action was blocked by a locked database
// otherwise, always return true
private void doShortcutActions() {
Intent intent = getIntent();
String action = intent.getStringExtra("action");
if (action == null) {
return true;
} else if (_db.isLocked()) {
return false;
if (action == null || _db.isLocked()) {
return;
}
switch (action) {
@ -323,11 +317,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
}
intent.removeExtra("action");
return true;
}
public void startActivityForResult(Intent intent, int requestCode) {
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
super.startActivityForResult(intent, requestCode);
}
@ -361,6 +353,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
}
updateLockIcon();
doShortcutActions();
}
private BottomSheetDialog createBottomSheet(final DatabaseEntry entry) {

View file

@ -339,6 +339,11 @@ public class PreferencesFragment extends PreferenceFragmentCompat {
return true;
}
});
}
@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
updateEncryptionPreferences();
}