diff --git a/app/src/main/java/com/keepassdroid/activities/EntryActivity.java b/app/src/main/java/com/keepassdroid/activities/EntryActivity.java
index 0475314d0..a24930bf2 100644
--- a/app/src/main/java/com/keepassdroid/activities/EntryActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/EntryActivity.java
@@ -57,13 +57,13 @@ import com.keepassdroid.database.PwEntry;
import com.keepassdroid.database.exception.SamsungClipboardException;
import com.keepassdroid.intents.Intents;
import com.keepassdroid.settings.PreferencesUtil;
+import com.keepassdroid.password.PasswordActivity;
import com.keepassdroid.tasks.UIToastTask;
import com.keepassdroid.utils.EmptyUtils;
import com.keepassdroid.utils.MenuUtil;
import com.keepassdroid.utils.Types;
import com.keepassdroid.utils.Util;
import com.keepassdroid.view.EntryContentsView;
-import com.kunzisoft.keepass.KeePass;
import com.kunzisoft.keepass.R;
import java.util.Date;
@@ -74,7 +74,7 @@ import java.util.UUID;
import static com.keepassdroid.settings.PreferencesUtil.isClipboardNotificationsEnable;
-public class EntryActivity extends LockCloseHideActivity {
+public class EntryActivity extends LockingHideActivity {
public static final String KEY_ENTRY = "entry";
public static final int NOTIFY_USERNAME = 1;
@@ -91,7 +91,7 @@ public class EntryActivity extends LockCloseHideActivity {
private BroadcastReceiver mIntentReceiver;
protected boolean readOnly = false;
- public static void Launch(Activity act, PwEntry pw) {
+ public static void launch(Activity act, PwEntry pw) {
Intent intent = new Intent(act, EntryActivity.class);
intent.putExtra(KEY_ENTRY, Types.UUIDtoBytes(pw.getUUID()));
act.startActivityForResult(intent, EntryEditActivity.ADD_OR_UPDATE_ENTRY_REQUEST_CODE);
@@ -120,8 +120,6 @@ public class EntryActivity extends LockCloseHideActivity {
mShowPassword = !PreferencesUtil.isPasswordMask(this);
- setResult(KeePass.EXIT_NORMAL);
-
// Get Entry from UUID
Intent i = getIntent();
UUID uuid = Types.bytestoUUID(i.getByteArrayExtra(KEY_ENTRY));
@@ -388,7 +386,7 @@ public class EntryActivity extends LockCloseHideActivity {
case R.id.menu_lock:
App.setShutdown();
- setResult(KeePass.EXIT_LOCK);
+ setResult(PasswordActivity.RESULT_EXIT_LOCK);
finish();
return true;
diff --git a/app/src/main/java/com/keepassdroid/activities/EntryEditActivity.java b/app/src/main/java/com/keepassdroid/activities/EntryEditActivity.java
index 7c16165bf..11fb32a39 100644
--- a/app/src/main/java/com/keepassdroid/activities/EntryEditActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/EntryEditActivity.java
@@ -59,7 +59,6 @@ import com.keepassdroid.utils.MenuUtil;
import com.keepassdroid.utils.Types;
import com.keepassdroid.utils.Util;
import com.keepassdroid.view.EntryEditNewField;
-import com.kunzisoft.keepass.KeePass;
import com.kunzisoft.keepass.R;
import java.util.ArrayList;
@@ -68,7 +67,7 @@ import java.util.Date;
import java.util.Map;
import java.util.UUID;
-public class EntryEditActivity extends LockCloseHideActivity
+public class EntryEditActivity extends LockingHideActivity
implements IconPickerDialogFragment.IconPickerListener,
GeneratePasswordDialogFragment.GeneratePasswordListener {
@@ -123,7 +122,6 @@ public class EntryEditActivity extends LockCloseHideActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_edit);
- setResult(KeePass.EXIT_NORMAL);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle(getString(R.string.app_name));
diff --git a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
index 0f579cfde..75c62472d 100644
--- a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
@@ -54,10 +54,10 @@ import com.keepassdroid.dialog.ReadOnlyDialog;
import com.keepassdroid.fragments.AssignMasterKeyDialogFragment;
import com.keepassdroid.fragments.GroupEditDialogFragment;
import com.keepassdroid.fragments.IconPickerDialogFragment;
+import com.keepassdroid.password.PasswordActivity;
import com.keepassdroid.search.SearchResultsActivity;
import com.keepassdroid.tasks.ProgressTask;
import com.keepassdroid.view.ListNodesWithAddButtonView;
-import com.kunzisoft.keepass.KeePass;
import com.kunzisoft.keepass.R;
public class GroupActivity extends ListNodesActivity
@@ -76,11 +76,11 @@ public class GroupActivity extends ListNodesActivity
private static final String TAG = "Group Activity:";
- public static void Launch(Activity act) {
- Launch(act, null);
+ public static void launch(Activity act) {
+ launch(act, null);
}
- public static void Launch(Activity act, PwGroup group) {
+ public static void launch(Activity act, PwGroup group) {
Intent intent = new Intent(act, GroupActivity.class);
if ( group != null ) {
intent.putExtra(KEY_ENTRY, group.getId());
@@ -175,10 +175,10 @@ public class GroupActivity extends ListNodesActivity
mAdapter.registerANodeToUpdate(node);
switch (node.getType()) {
case GROUP:
- GroupActivity.Launch(GroupActivity.this, (PwGroup) node);
+ GroupActivity.launch(GroupActivity.this, (PwGroup) node);
break;
case ENTRY:
- EntryActivity.Launch(GroupActivity.this, (PwEntry) node);
+ EntryActivity.launch(GroupActivity.this, (PwEntry) node);
break;
}
return true;
@@ -296,7 +296,7 @@ public class GroupActivity extends ListNodesActivity
case R.id.menu_lock:
App.setShutdown();
- setResult(KeePass.EXIT_LOCK);
+ setResult(PasswordActivity.RESULT_EXIT_LOCK);
finish();
return true;
diff --git a/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java b/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java
index 688cbebeb..cedaf1de1 100644
--- a/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/ListNodesActivity.java
@@ -53,10 +53,9 @@ import com.keepassdroid.tasks.UIToastTask;
import com.keepassdroid.utils.MenuUtil;
import com.keepassdroid.database.SortNodeEnum;
import com.keepassdroid.view.AssignPasswordHelper;
-import com.kunzisoft.keepass.KeePass;
import com.kunzisoft.keepass.R;
-public abstract class ListNodesActivity extends LockCloseListActivity
+public abstract class ListNodesActivity extends LockingActivity
implements AssignMasterKeyDialogFragment.AssignPasswordDialogListener,
NodeAdapter.OnNodeClickCallback,
SortDialogFragment.SortSelectionListener {
@@ -87,7 +86,6 @@ public abstract class ListNodesActivity extends LockCloseListActivity
ActivityCompat.invalidateOptionsMenu(this);
setContentView(R.layout.list_nodes);
- setResult(KeePass.EXIT_NORMAL);
mCurrentGroup = initCurrentGroup();
@@ -139,10 +137,10 @@ public abstract class ListNodesActivity extends LockCloseListActivity
mAdapter.registerANodeToUpdate(node);
switch (node.getType()) {
case GROUP:
- GroupActivity.Launch(this, (PwGroup) node);
+ GroupActivity.launch(this, (PwGroup) node);
break;
case ENTRY:
- EntryActivity.Launch(this, (PwEntry) node);
+ EntryActivity.launch(this, (PwEntry) node);
break;
}
}
diff --git a/app/src/main/java/com/keepassdroid/activities/LockCloseHideActivity.java b/app/src/main/java/com/keepassdroid/activities/LockCloseHideActivity.java
deleted file mode 100644
index 4490e6a2c..000000000
--- a/app/src/main/java/com/keepassdroid/activities/LockCloseHideActivity.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2017 Brian Pellin, Jeremy Jamet / Kunzisoft.
- *
- * This file is part of KeePass DX.
- *
- * KeePass DX is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * KeePass DX is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with KeePass DX. If not, see .
- *
- */
-package com.keepassdroid.activities;
-
-import com.keepassdroid.compat.BuildCompat;
-
-import android.os.Bundle;
-import android.view.WindowManager.LayoutParams;
-
-/**
- * Locking Close Activity that sets FLAG_SECURE to prevent screenshots, and from
- * appearing in the recent app preview
- * @author Brian Pellin
- *
- */
-public abstract class LockCloseHideActivity extends LockCloseActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // Several gingerbread devices have problems with FLAG_SECURE
- int ver = BuildCompat.getSdkVersion();
- if (ver >= BuildCompat.VERSION_CODE_ICE_CREAM_SANDWICH || ver < BuildCompat.VERSION_CODE_GINGERBREAD) {
- getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
- }
- }
-
-}
diff --git a/app/src/main/java/com/keepassdroid/activities/LockCloseListActivity.java b/app/src/main/java/com/keepassdroid/activities/LockCloseListActivity.java
deleted file mode 100644
index 4aa3dd2bc..000000000
--- a/app/src/main/java/com/keepassdroid/activities/LockCloseListActivity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2017 Brian Pellin, Jeremy Jamet / Kunzisoft.
- *
- * This file is part of KeePass DX.
- *
- * KeePass DX is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * KeePass DX is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with KeePass DX. If not, see .
- *
- */
-package com.keepassdroid.activities;
-
-import com.keepassdroid.timeout.TimeoutHelper;
-
-public abstract class LockCloseListActivity extends LockingActivity {
-
- @Override
- protected void onResume() {
- super.onResume();
-
- TimeoutHelper.checkShutdown(this);
- }
-}
diff --git a/app/src/main/java/com/keepassdroid/activities/LockCloseActivity.java b/app/src/main/java/com/keepassdroid/activities/LockingHideActivity.java
similarity index 66%
rename from app/src/main/java/com/keepassdroid/activities/LockCloseActivity.java
rename to app/src/main/java/com/keepassdroid/activities/LockingHideActivity.java
index 2b5f7d658..494ed94ee 100644
--- a/app/src/main/java/com/keepassdroid/activities/LockCloseActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/LockingHideActivity.java
@@ -21,8 +21,27 @@ package com.keepassdroid.activities;
import android.content.ActivityNotFoundException;
import android.content.Intent;
+import android.os.Bundle;
+import android.view.WindowManager;
-public abstract class LockCloseActivity extends LockingActivity {
+import com.keepassdroid.compat.BuildCompat;
+
+/**
+ * Locking Hide Activity that sets FLAG_SECURE to prevent screenshots, and from
+ * appearing in the recent app preview
+ */
+public abstract class LockingHideActivity extends LockingActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Several gingerbread devices have problems with FLAG_SECURE
+ int ver = BuildCompat.getSdkVersion();
+ if (ver >= BuildCompat.VERSION_CODE_ICE_CREAM_SANDWICH || ver < BuildCompat.VERSION_CODE_GINGERBREAD) {
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
+ }
+ }
/* (non-Javadoc) Workaround for HTC Linkify issues
* @see android.app.Activity#startActivity(android.content.Intent)
diff --git a/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java b/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
index 35e538fe2..5ac5a317a 100644
--- a/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
+++ b/app/src/main/java/com/keepassdroid/fileselect/FileSelectActivity.java
@@ -105,7 +105,8 @@ public class FileSelectActivity extends StylishActivity implements
Intent intent = new Intent(activity, FileSelectActivity.class);
if (extras != null)
intent.putExtras(extras);
- activity.startActivity(intent);
+ // only to avoid visible flickering when redirecting
+ activity.startActivityForResult(intent, 0);
}
@Override
@@ -400,7 +401,7 @@ public class FileSelectActivity extends StylishActivity implements
fileHistory.createFile(mUri, getFilename());
mAdapter.notifyDataSetChanged();
updateTitleFileListView();
- GroupActivity.Launch(FileSelectActivity.this);
+ GroupActivity.launch(FileSelectActivity.this);
}
}
}
diff --git a/app/src/main/java/com/keepassdroid/password/PasswordActivity.java b/app/src/main/java/com/keepassdroid/password/PasswordActivity.java
index 232661dd1..d90298fdb 100644
--- a/app/src/main/java/com/keepassdroid/password/PasswordActivity.java
+++ b/app/src/main/java/com/keepassdroid/password/PasswordActivity.java
@@ -69,7 +69,6 @@ import com.keepassdroid.utils.MenuUtil;
import com.keepassdroid.utils.UriUtil;
import com.keepassdroid.view.FingerPrintDialog;
import com.keepassdroid.view.KeyFileHelper;
-import com.kunzisoft.keepass.KeePass;
import com.kunzisoft.keepass.R;
import java.io.File;
@@ -91,6 +90,8 @@ public class PasswordActivity extends LockingActivity
implements FingerPrintHelper.FingerPrintCallback, UriIntentInitTaskCallback {
public static final String KEY_DEFAULT_FILENAME = "defaultFileName";
+ public static final int RESULT_EXIT_LOCK = 1450;
+
private static final String KEY_PASSWORD = "password";
private static final String KEY_LAUNCH_IMMEDIATELY = "launchImmediately";
@@ -125,7 +126,7 @@ public class PasswordActivity extends LockingActivity
public static void launch(
Activity act,
String fileName) throws FileNotFoundException {
- launch(act, fileName, "", null);
+ launch(act, fileName,null);
}
public static void launch(
@@ -155,13 +156,13 @@ public class PasswordActivity extends LockingActivity
}
}
- Intent i = new Intent(act, PasswordActivity.class);
- i.putExtra(UriIntentInitTask.KEY_FILENAME, fileName);
- i.putExtra(UriIntentInitTask.KEY_KEYFILE, keyFile);
+ Intent intent = new Intent(act, PasswordActivity.class);
+ intent.putExtra(UriIntentInitTask.KEY_FILENAME, fileName);
+ intent.putExtra(UriIntentInitTask.KEY_KEYFILE, keyFile);
if (extras != null)
- i.putExtras(extras);
-
- act.startActivityForResult(i, 0);
+ intent.putExtras(extras);
+ // only to avoid visible flickering when redirecting
+ act.startActivityForResult(intent, 0);
}
@Override
@@ -171,8 +172,9 @@ public class PasswordActivity extends LockingActivity
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
+ boolean stopResult = false;
if (keyFileHelper != null) {
- keyFileHelper.onActivityResultCallback(requestCode, resultCode, data,
+ stopResult = keyFileHelper.onActivityResultCallback(requestCode, resultCode, data,
new KeyFileHelper.KeyFileCallback() {
@Override
public void onKeyFileResultCallback(Uri uri) {
@@ -183,18 +185,14 @@ public class PasswordActivity extends LockingActivity
});
}
- switch (requestCode) {
- case KeePass.EXIT_NORMAL:
- setEmptyViews();
- App.getDB().clear();
- break;
-
- case KeePass.EXIT_LOCK:
- setResult(KeePass.EXIT_LOCK);
- setEmptyViews();
- finish();
- App.getDB().clear();
- break;
+ if (!stopResult) {
+ switch (resultCode) {
+ case RESULT_EXIT_LOCK:
+ case Activity.RESULT_CANCELED:
+ setEmptyViews();
+ App.getDB().clear();
+ break;
+ }
}
}
@@ -790,13 +788,13 @@ public class PasswordActivity extends LockingActivity
DialogInterface dialog,
int which) {
// TODO GroupActivity.launch(PasswordActivity.this, getIntent().getExtras());
- GroupActivity.Launch(PasswordActivity.this);
+ GroupActivity.launch(PasswordActivity.this);
}
});
} else if (mSuccess) {
// TODO GroupActivity.launch(PasswordActivity.this, getIntent().getExtras());
- GroupActivity.Launch(PasswordActivity.this);
+ GroupActivity.launch(PasswordActivity.this);
} else {
displayMessage(PasswordActivity.this);
}
diff --git a/app/src/main/java/com/keepassdroid/timeout/TimeoutHelper.java b/app/src/main/java/com/keepassdroid/timeout/TimeoutHelper.java
index 18d5a6d9c..f093b1240 100644
--- a/app/src/main/java/com/keepassdroid/timeout/TimeoutHelper.java
+++ b/app/src/main/java/com/keepassdroid/timeout/TimeoutHelper.java
@@ -23,7 +23,7 @@ import android.app.Activity;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
-import com.kunzisoft.keepass.KeePass;
+import com.keepassdroid.password.PasswordActivity;
import com.kunzisoft.keepass.R;
import com.keepassdroid.app.App;
import com.keepassdroid.compat.EditorCompat;
@@ -88,7 +88,7 @@ public class TimeoutHelper {
public static void checkShutdown(Activity act) {
if ( App.isShutdown() && App.getDB().Loaded() ) {
- act.setResult(KeePass.EXIT_LOCK);
+ act.setResult(PasswordActivity.RESULT_EXIT_LOCK);
act.finish();
}
}
diff --git a/app/src/main/java/com/keepassdroid/view/KeyFileHelper.java b/app/src/main/java/com/keepassdroid/view/KeyFileHelper.java
index 0deddb549..779e1a993 100644
--- a/app/src/main/java/com/keepassdroid/view/KeyFileHelper.java
+++ b/app/src/main/java/com/keepassdroid/view/KeyFileHelper.java
@@ -147,7 +147,12 @@ public class KeyFileHelper {
browserDialog.show();
}
- public void onActivityResultCallback(
+ /**
+ * To use in onActivityResultCallback in Fragment or Activity
+ * @param keyFileCallback Callback retrieve from data
+ * @return true if requestCode was captured, false elsechere
+ */
+ public boolean onActivityResultCallback(
int requestCode,
int resultCode,
Intent data,
@@ -164,7 +169,7 @@ public class KeyFileHelper {
if (keyFileCallback != null)
keyFileCallback.onKeyFileResultCallback(keyUri);
}
- break;
+ return true;
case GET_CONTENT:
case OPEN_DOC:
if (resultCode == RESULT_OK) {
@@ -189,8 +194,9 @@ public class KeyFileHelper {
}
}
}
- break;
+ return true;
}
+ return false;
}
public interface KeyFileCallback {
diff --git a/app/src/main/java/com/kunzisoft/keepass/KeePass.java b/app/src/main/java/com/kunzisoft/keepass/KeePass.java
index 8d9ce44b0..be9c547af 100644
--- a/app/src/main/java/com/kunzisoft/keepass/KeePass.java
+++ b/app/src/main/java/com/kunzisoft/keepass/KeePass.java
@@ -21,20 +21,11 @@ package com.kunzisoft.keepass;
import android.app.Activity;
import android.content.Intent;
-import android.os.Bundle;
import com.keepassdroid.fileselect.FileSelectActivity;
public class KeePass extends Activity {
- public static final int EXIT_NORMAL = 0;
- public static final int EXIT_LOCK = 1;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
-
@Override
protected void onStart() {
super.onStart();
@@ -42,19 +33,13 @@ public class KeePass extends Activity {
}
protected void startFileSelectActivity() {
- FileSelectActivity.launch(this);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- }
+ FileSelectActivity.launch(this);
+ }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
-
- if (resultCode == EXIT_NORMAL) {
+ if (resultCode == Activity.RESULT_CANCELED) {
finish();
}
}