From 391e869d29116320a6ea2fb59e2c9015088c966f Mon Sep 17 00:00:00 2001 From: Torsten Grote <t@grobox.de> Date: Thu, 5 Jul 2018 11:35:37 -0300 Subject: [PATCH] Also remind to sign-in again after app was upgraded --- briar-android/src/main/AndroidManifest.xml | 3 ++- .../briarproject/briar/android/AndroidComponent.java | 3 ++- .../briar/android/BriarApplicationImpl.java | 2 +- .../SignInReminderReceiver.java} | 11 ++++++++--- briar-android/src/main/res/values/strings.xml | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) rename briar-android/src/main/java/org/briarproject/briar/android/{BootReceiver.java => login/SignInReminderReceiver.java} (89%) diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index f105d57e97..9ae75930b6 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -26,10 +26,11 @@ android:theme="@style/BriarTheme"> <receiver - android:name="org.briarproject.briar.android.BootReceiver" + android:name="org.briarproject.briar.android.login.SignInReminderReceiver" android:exported="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> + <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/> </intent-filter> </receiver> diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java index 778a6f2b95..087aa5ea0c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java @@ -26,6 +26,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.bramble.api.system.Clock; import org.briarproject.briar.BriarCoreEagerSingletons; import org.briarproject.briar.BriarCoreModule; +import org.briarproject.briar.android.login.SignInReminderReceiver; import org.briarproject.briar.android.reporting.BriarReportSender; import org.briarproject.briar.api.android.AndroidNotificationManager; import org.briarproject.briar.api.android.DozeWatchdog; @@ -150,7 +151,7 @@ public interface AndroidComponent @IoExecutor Executor ioExecutor(); - void inject(BootReceiver briarService); + void inject(SignInReminderReceiver briarService); void inject(BriarService briarService); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java index 97891c389f..08fc14b5da 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarApplicationImpl.java @@ -77,7 +77,7 @@ public class BriarApplicationImpl extends Application private final CachingLogHandler logHandler = new CachingLogHandler(); private AndroidComponent applicationComponent; - private SharedPreferences prefs; + private volatile SharedPreferences prefs; @Override protected void attachBaseContext(Context base) { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java similarity index 89% rename from briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java rename to briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java index 1d1fb1e2c5..e361aeb6e7 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/BootReceiver.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SignInReminderReceiver.java @@ -1,4 +1,4 @@ -package org.briarproject.briar.android; +package org.briarproject.briar.android.login; import android.app.NotificationChannel; import android.app.NotificationManager; @@ -12,6 +12,8 @@ import android.support.v4.content.ContextCompat; import org.briarproject.bramble.api.db.DatabaseConfig; import org.briarproject.briar.R; +import org.briarproject.briar.android.AndroidComponent; +import org.briarproject.briar.android.BriarApplication; import org.briarproject.briar.android.navdrawer.NavDrawerActivity; import org.briarproject.briar.android.settings.SettingsActivity; @@ -20,6 +22,7 @@ import javax.inject.Inject; import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.content.Context.NOTIFICATION_SERVICE; import static android.content.Intent.ACTION_BOOT_COMPLETED; +import static android.content.Intent.ACTION_MY_PACKAGE_REPLACED; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.os.Build.VERSION.SDK_INT; @@ -31,7 +34,7 @@ import static org.briarproject.briar.android.settings.SettingsFragment.NOTIFY_SI import static org.briarproject.briar.api.android.AndroidNotificationManager.REMINDER_CHANNEL_ID; import static org.briarproject.briar.api.android.AndroidNotificationManager.REMINDER_NOTIFICATION_ID; -public class BootReceiver extends BroadcastReceiver { +public class SignInReminderReceiver extends BroadcastReceiver { @Inject DatabaseConfig databaseConfig; @@ -45,7 +48,9 @@ public class BootReceiver extends BroadcastReceiver { applicationComponent.inject(this); String action = intent.getAction(); - if (action != null && action.equals(ACTION_BOOT_COMPLETED)) { + if (action == null) return; + if (action.equals(ACTION_BOOT_COMPLETED) || + action.equals(ACTION_MY_PACKAGE_REPLACED)) { if (databaseConfig.databaseExists()) { SharedPreferences prefs = app.getDefaultSharedPreferences(); if (prefs.getBoolean(NOTIFY_SIGN_IN, true)) { diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index bf65830691..5977fa52d1 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -375,7 +375,7 @@ <!-- Settings Notifications --> <string name="notification_settings_title">Notifications</string> <string name="notify_sign_in_title">Remind me to sign in</string> - <string name="notify_sign_in_summary">Shows a reminder when the phone starts</string> + <string name="notify_sign_in_summary">Show a reminder when the phone starts or the app got updated</string> <string name="notify_private_messages_setting_title">Private messages</string> <string name="notify_private_messages_setting_summary">Show alerts for private messages</string> <string name="notify_private_messages_setting_summary_26">Configure alerts for private messages</string> -- GitLab