diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b7dc9dc5..8141d0cc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -64,6 +64,11 @@
+
{
Log.i(TAG, "Toggled tile.");
if (prefMgr.getIsHidden()) {
- hider.unhide();
+ startActivityAndCollapse(new Intent(this, SecurityAuthForQuickHideActivity.class)
+ .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
} else {
hider.hide();
}
diff --git a/app/src/main/java/deltazero/amarok/ui/SecurityAuthForQuickHideActivity.java b/app/src/main/java/deltazero/amarok/ui/SecurityAuthForQuickHideActivity.java
new file mode 100644
index 00000000..5694184d
--- /dev/null
+++ b/app/src/main/java/deltazero/amarok/ui/SecurityAuthForQuickHideActivity.java
@@ -0,0 +1,38 @@
+package deltazero.amarok.ui;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.util.Log;
+
+import deltazero.amarok.Hider;
+import deltazero.amarok.R;
+import deltazero.amarok.utils.SecurityAuth;
+
+/**
+ * An empty & transparent activity with a SecurityAuth dialog only.
+ * If the SecurityAuth is passed, unhide files and apps. Otherwise, finish the activity.
+ */
+public class SecurityAuthForQuickHideActivity extends AppCompatActivity {
+
+ private SecurityAuth securityAuth;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_empty);
+
+ securityAuth = new SecurityAuth(this, succeed -> {
+ if (succeed)
+ new Hider(this).unhide();
+ finish();
+ });
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ Log.i("SecurityAuth", "Start SecurityAuthForQuickHideActivity");
+ securityAuth.authenticate();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/deltazero/amarok/utils/SecurityAuth.java b/app/src/main/java/deltazero/amarok/utils/SecurityAuth.java
index f5fcdd7e..4967e6da 100644
--- a/app/src/main/java/deltazero/amarok/utils/SecurityAuth.java
+++ b/app/src/main/java/deltazero/amarok/utils/SecurityAuth.java
@@ -17,14 +17,19 @@ public interface SecurityAuthCallback {
private SecurityAuthCallback callback;
private FragmentActivity activity;
private PrefMgr prefMgr;
+ private PasswordAuthFragment passwordAuthFragment;
public SecurityAuth(FragmentActivity activity, SecurityAuthCallback callback) {
this.callback = callback;
this.activity = activity;
prefMgr = new PrefMgr(activity);
+ if (passwordAuthFragment == null)
+ passwordAuthFragment = new PasswordAuthFragment();
}
public void authenticate() {
+ if (passwordAuthFragment.isAdded())
+ passwordAuthFragment.dismiss();
if (prefMgr.getAmarokPassword() != null) {
if (prefMgr.getEnableAmarokBiometricAuth()) biometricAuthenticate();
else passwordAuthenticate();
@@ -35,7 +40,7 @@ public void authenticate() {
private void passwordAuthenticate() {
assert prefMgr.getAmarokPassword() != null;
- new PasswordAuthFragment()
+ passwordAuthFragment
.setOnVerifiedCallback(succeed -> callback.onSecurityAuthCallback(succeed))
.show(activity.getSupportFragmentManager(), null);
}
diff --git a/app/src/main/res/layout/activity_empty.xml b/app/src/main/res/layout/activity_empty.xml
new file mode 100644
index 00000000..41d2ef14
--- /dev/null
+++ b/app/src/main/res/layout/activity_empty.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 1683fb4e..f70af4e5 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -14,4 +14,13 @@
+
+
\ No newline at end of file