diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java
index ef8e1866ce..ccbf1fda51 100644
--- a/app/src/main/java/eu/faircode/email/ActivityMain.java
+++ b/app/src/main/java/eu/faircode/email/ActivityMain.java
@@ -28,6 +28,7 @@ import android.content.res.Configuration;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
@@ -46,11 +47,50 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack
private static final long SPLASH_DELAY = 1500L; // milliseconds
private static final long SERVICE_START_DELAY = 5 * 1000L; // milliseconds
+ private static final long IGNORE_STORAGE_SPACE = 24 * 60 * 60 * 1000L; // milliseconds
@Override
protected void onCreate(Bundle savedInstanceState) {
+ long now = new Date().getTime();
+
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean accept_unsupported = prefs.getBoolean("accept_unsupported", false);
+ long accept_space = prefs.getLong("accept_space", 0);
+
+ long cake = Helper.getAvailableStorageSpace();
+ if (cake < Helper.MIN_REQUIRED_SPACE && accept_space < now) {
+ setTheme(R.style.AppThemeBlueOrangeLight);
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_space);
+
+ TextView tvRemaining = findViewById(R.id.tvRemaining);
+ tvRemaining.setText(getString(R.string.app_cake_remaining,
+ Helper.humanReadableByteCount(cake)));
+
+ TextView tvRequired = findViewById(R.id.tvRequired);
+ tvRequired.setText(getString(R.string.app_cake_required,
+ Helper.humanReadableByteCount(Helper.MIN_REQUIRED_SPACE, true)));
+
+ Button btnFix = findViewById(R.id.btnFix);
+ btnFix.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(Settings.ACTION_INTERNAL_STORAGE_SETTINGS);
+ v.getContext().startActivity(intent);
+ }
+ });
+
+ Button btnContinue = findViewById(R.id.btnContinue);
+ btnContinue.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ prefs.edit().putLong("accept_space", now + IGNORE_STORAGE_SPACE).commit();
+ ApplicationEx.restart(v.getContext(), "accept_space");
+ }
+ });
+
+ return;
+ }
if (!accept_unsupported &&
!Helper.isSupportedDevice() &&
diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
index 5ead8da062..ecfabbbb2b 100644
--- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
+++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java
@@ -267,7 +267,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
"eml_auto_confirm",
"open_with_pkg", "open_with_tabs",
"gmail_checked", "outlook_checked",
- "redmi_note"
+ "redmi_note",
+ "accept_space", "accept_unsupported"
};
@Override
diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java
index a13db6a2ea..c4c8060405 100644
--- a/app/src/main/java/eu/faircode/email/Helper.java
+++ b/app/src/main/java/eu/faircode/email/Helper.java
@@ -174,7 +174,7 @@ public class Helper {
static final float LOW_LIGHT = 0.6f;
static final int BUFFER_SIZE = 8192; // Same as in Files class
- static final long MIN_REQUIRED_SPACE = 250 * 1024L * 1024L;
+ static final long MIN_REQUIRED_SPACE = 100 * 1000L * 1000L;
static final int AUTOLOCK_GRACE = 15; // seconds
static final long PIN_FAILURE_DELAY = 3; // seconds
diff --git a/app/src/main/res/layout/activity_space.xml b/app/src/main/res/layout/activity_space.xml
new file mode 100644
index 0000000000..1319cabf1d
--- /dev/null
+++ b/app/src/main/res/layout/activity_space.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2e49fe35db..0c0e137c5c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -12,6 +12,8 @@
Continue anyway
Go \'back\' again to exit
Insufficient storage space left
+ Remaining storage space on the device: %1$s
+ Minimum required storage space: %1$s
Last update: %1$s
Downloaded from: %1$s