From 75370c8124f7d69118054a61260a96429d7df907 Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Tue, 11 Jan 2022 14:41:50 +0100 Subject: [PATCH 1/5] Refuse to start on Android 4 beyond the set expiry date --- briar-android/src/main/AndroidManifest.xml | 4 ++ .../android/activity/ActivityComponent.java | 3 ++ .../splash/ExpiredOldAndroidActivity.java | 42 +++++++++++++++++ .../android/splash/SplashScreenActivity.java | 11 +++-- .../layout/activity_expired_old_android.xml | 45 +++++++++++++++++++ briar-android/src/main/res/values/strings.xml | 4 ++ 6 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java create mode 100644 briar-android/src/main/res/layout/activity_expired_old_android.xml diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 27956ce43..edcea26a7 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -99,6 +99,10 @@ android:name="org.briarproject.briar.android.splash.ExpiredActivity" android:label="@string/app_name" /> + + diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java index 8c0a30735..43baf5816 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/ActivityComponent.java @@ -80,6 +80,7 @@ import org.briarproject.briar.android.sharing.ShareBlogFragment; import org.briarproject.briar.android.sharing.ShareForumActivity; import org.briarproject.briar.android.sharing.ShareForumFragment; import org.briarproject.briar.android.sharing.SharingModule; +import org.briarproject.briar.android.splash.ExpiredOldAndroidActivity; import org.briarproject.briar.android.splash.SplashScreenActivity; import org.briarproject.briar.android.test.TestDataActivity; @@ -182,6 +183,8 @@ public interface ActivityComponent { void inject(RemovableDriveActivity activity); + void inject(ExpiredOldAndroidActivity activity); + // Fragments void inject(SetupFragment fragment); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java new file mode 100644 index 000000000..025363afe --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java @@ -0,0 +1,42 @@ +package org.briarproject.briar.android.splash; + +import android.content.Context; +import android.os.Bundle; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.briar.R; +import org.briarproject.briar.android.Localizer; +import org.briarproject.briar.android.activity.ActivityComponent; +import org.briarproject.briar.android.activity.BriarActivity; + +import javax.annotation.Nullable; + +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; +import static org.briarproject.briar.android.TestingConstants.PREVENT_SCREENSHOTS; + +@NotNullByDefault +public class ExpiredOldAndroidActivity extends BriarActivity { + + @Override + public void onCreate(@Nullable Bundle state) { + super.onCreate(state); + + if (PREVENT_SCREENSHOTS) getWindow().addFlags(FLAG_SECURE); + + setContentView(R.layout.activity_expired_old_android); + findViewById(R.id.delete_account_button).setOnClickListener(v -> + signOut(true, true)); + } + + @Override + protected void attachBaseContext(Context base) { + super.attachBaseContext( + Localizer.getInstance().setLocale(base)); + Localizer.getInstance().setLocale(this); + } + + @Override + public void injectActivity(ActivityComponent component) { + component.inject(this); + } +} diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java index 81b3e75c6..b8905f764 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java @@ -65,9 +65,14 @@ public class SplashScreenActivity extends BaseActivity { int duration = getResources().getInteger(R.integer.splashScreenDuration); new Handler().postDelayed(() -> { - if (IS_DEBUG_BUILD && currentTimeMillis() >= EXPIRY_DATE) { - LOG.info("Expired"); - startNextActivity(ExpiredActivity.class); + if (currentTimeMillis() >= EXPIRY_DATE) { + if (IS_DEBUG_BUILD) { + LOG.info("Expired: debug build"); + startNextActivity(ExpiredActivity.class); + } else { + LOG.info("Expired: running on old Android"); + startNextActivity(ExpiredOldAndroidActivity.class); + } } else { startNextActivity(ENTRY_ACTIVITY); } diff --git a/briar-android/src/main/res/layout/activity_expired_old_android.xml b/briar-android/src/main/res/layout/activity_expired_old_android.xml new file mode 100644 index 000000000..c1bf01684 --- /dev/null +++ b/briar-android/src/main/res/layout/activity_expired_old_android.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + +