diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index f105d57e9706e53679d3ba75d2c8baed390c9497..9ae75930b6de1e5bae61576f8a385967029f75ad 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 778a6f2b95c6454adaf4ddad3d174eb5239f13cb..087aa5ea0cd7d6a2f6b76eb9c9b3a82d92e269fc 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 97891c389f5b13c2c70620c4ec6ecd41a5d2f84e..08fc14b5daabbb6e415562b945b3e2ae5ee11b46 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 1d1fb1e2c561f5b438fa4146292bf10e4c7d1f9f..e361aeb6e774bdcab374803bee8e306b79c02cce 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 bf65830691391c366d174a8f5985019739801f87..5977fa52d16b8350938c6356a9a9c1a8b065b8d2 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>