diff --git a/res/drawable-hdpi/ic_security_white_24dp.png b/res/drawable-hdpi/ic_security_white_24dp.png deleted file mode 100644 index 262800a4d..000000000 Binary files a/res/drawable-hdpi/ic_security_white_24dp.png and /dev/null differ diff --git a/res/drawable-mdpi/ic_security_white_24dp.png b/res/drawable-mdpi/ic_security_white_24dp.png deleted file mode 100644 index 44ee7346e..000000000 Binary files a/res/drawable-mdpi/ic_security_white_24dp.png and /dev/null differ diff --git a/res/drawable-xhdpi/ic_security_white_24dp.png b/res/drawable-xhdpi/ic_security_white_24dp.png deleted file mode 100644 index 7e306c303..000000000 Binary files a/res/drawable-xhdpi/ic_security_white_24dp.png and /dev/null differ diff --git a/res/drawable-xxhdpi/ic_security_white_24dp.png b/res/drawable-xxhdpi/ic_security_white_24dp.png deleted file mode 100644 index 7bcb2fd01..000000000 Binary files a/res/drawable-xxhdpi/ic_security_white_24dp.png and /dev/null differ diff --git a/res/drawable-xxxhdpi/ic_security_white_24dp.png b/res/drawable-xxxhdpi/ic_security_white_24dp.png deleted file mode 100644 index b1eddbd6c..000000000 Binary files a/res/drawable-xxxhdpi/ic_security_white_24dp.png and /dev/null differ diff --git a/res/drawable/ic_security_24dp.xml b/res/drawable/ic_security_24dp.xml deleted file mode 100644 index 93bd6f813..000000000 --- a/res/drawable/ic_security_24dp.xml +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/res/values/strings.xml b/res/values/strings.xml index 094a23385..6add24982 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -492,8 +492,6 @@ Balanced Worse quality, small size Vibrate - Change secret - Change your PIN / pattern / fingerprint via system settings Screen security Request to block screenshots in the recents list and inside the app @@ -666,15 +664,9 @@ Chat protection enabled. - Screen lock - Lock access with Android screen lock or fingerprint; to avoid showing the prior content, please also enable \"Screen security\". - Authentication failed. Unlock Delta Chat Please enter your system defined secret to unlock Delta Chat. - Inactivity timeout lock - Auto-lock Delta Chat after a specified time period of inactivity - Time to remain active - + Authentication failed. QR code diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index b4b5066d6..a4e03b792 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -20,11 +20,6 @@ android:icon="@drawable/ic_brightness_6_24dp" android:layout="@layout/preference_item" /> - - + + + + + + + - - - - - - - - - - - - - - - - - - - diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index b0f799db2..005932aa9 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -1,26 +1,18 @@ package org.thoughtcrime.securesms; -import android.annotation.SuppressLint; - -import androidx.appcompat.app.AppCompatDelegate; -import androidx.lifecycle.DefaultLifecycleObserver; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.ProcessLifecycleOwner; -import androidx.work.Constraints; -import androidx.work.ExistingPeriodicWorkPolicy; -import androidx.work.NetworkType; -import androidx.work.PeriodicWorkRequest; -import androidx.work.WorkManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.util.Log; -import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatDelegate; import androidx.multidex.MultiDexApplication; - -import com.b44t.messenger.DcContext; +import androidx.work.Constraints; +import androidx.work.ExistingPeriodicWorkPolicy; +import androidx.work.NetworkType; +import androidx.work.PeriodicWorkRequest; +import androidx.work.WorkManager; import org.thoughtcrime.securesms.connect.ApplicationDcContext; import org.thoughtcrime.securesms.connect.FetchWorker; @@ -33,18 +25,16 @@ import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.notifications.InChatSounds; import org.thoughtcrime.securesms.util.AndroidSignalProtocolLogger; import org.thoughtcrime.securesms.util.DynamicLanguage; -import org.thoughtcrime.securesms.util.ScreenLockUtil; import org.thoughtcrime.securesms.util.SignalProtocolLoggerProvider; import java.util.concurrent.TimeUnit; //import com.squareup.leakcanary.LeakCanary; -public class ApplicationContext extends MultiDexApplication implements DefaultLifecycleObserver { +public class ApplicationContext extends MultiDexApplication { public ApplicationDcContext dcContext; public DcLocationManager dcLocationManager; private JobManager jobManager; - private volatile boolean isAppVisible; public static ApplicationContext getInstance(Context context) { return (ApplicationContext)context.getApplicationContext(); @@ -76,7 +66,6 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi initializeRandomNumberFix(); initializeLogging(); initializeJobManager(); - ProcessLifecycleOwner.get().getLifecycle().addObserver(this); InChatSounds.getInstance(this); dcLocationManager = new DcLocationManager(this); @@ -118,25 +107,10 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); } - @Override - public void onStart(@NonNull LifecycleOwner owner) { - isAppVisible = true; - } - - @Override - public void onStop(@NonNull LifecycleOwner owner) { - isAppVisible = false; - ScreenLockUtil.setShouldLockApp(true); - } - public JobManager getJobManager() { return jobManager; } - public boolean isAppVisible() { - return isAppVisible; - } - private void initializeRandomNumberFix() { PRNGFixes.apply(); } diff --git a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java index 72dd11c29..2b23d024f 100644 --- a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java +++ b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java @@ -18,13 +18,11 @@ package org.thoughtcrime.securesms; import android.annotation.TargetApi; -import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; -import android.net.Uri; import android.os.Build; import android.os.Build.VERSION; import android.os.Bundle; @@ -37,11 +35,9 @@ import androidx.fragment.app.FragmentTransaction; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import androidx.preference.Preference; -import android.widget.Toast; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.preferences.AdvancedPreferenceFragment; -import org.thoughtcrime.securesms.preferences.AppProtectionPreferenceFragment; import org.thoughtcrime.securesms.preferences.AppearancePreferenceFragment; import org.thoughtcrime.securesms.preferences.ChatsPreferenceFragment; import org.thoughtcrime.securesms.preferences.CorrectedPreferenceFragment; @@ -66,7 +62,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA private static final String PREFERENCE_CATEGORY_PROFILE = "preference_category_profile"; private static final String PREFERENCE_CATEGORY_NOTIFICATIONS = "preference_category_notifications"; - private static final String PREFERENCE_CATEGORY_APP_PROTECTION = "preference_category_app_protection"; private static final String PREFERENCE_CATEGORY_APPEARANCE = "preference_category_appearance"; private static final String PREFERENCE_CATEGORY_CHATS = "preference_category_chats"; private static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced"; @@ -141,8 +136,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA .setOnPreferenceClickListener(new ProfileClickListener()); this.findPreference(PREFERENCE_CATEGORY_NOTIFICATIONS) .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_NOTIFICATIONS)); - this.findPreference(PREFERENCE_CATEGORY_APP_PROTECTION) - .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APP_PROTECTION)); this.findPreference(PREFERENCE_CATEGORY_APPEARANCE) .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APPEARANCE)); this.findPreference(PREFERENCE_CATEGORY_CHATS) @@ -187,7 +180,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA @TargetApi(11) private void tintIcons(Context context) { Drawable notifications = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_notifications_white_24dp)); - Drawable privacy = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_security_white_24dp)); Drawable appearance = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_brightness_6_white_24dp)); Drawable chats = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_forum_white_24dp)); Drawable advanced = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_advanced_white_24dp)); @@ -199,14 +191,12 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA typedArray.recycle(); DrawableCompat.setTint(notifications, color); - DrawableCompat.setTint(privacy, color); DrawableCompat.setTint(appearance, color); DrawableCompat.setTint(chats, color); DrawableCompat.setTint(advanced, color); DrawableCompat.setTint(help, color); this.findPreference(PREFERENCE_CATEGORY_NOTIFICATIONS).setIcon(notifications); - this.findPreference(PREFERENCE_CATEGORY_APP_PROTECTION).setIcon(privacy); this.findPreference(PREFERENCE_CATEGORY_APPEARANCE).setIcon(appearance); this.findPreference(PREFERENCE_CATEGORY_CHATS).setIcon(chats); this.findPreference(PREFERENCE_CATEGORY_ADVANCED).setIcon(advanced); @@ -228,9 +218,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA case PREFERENCE_CATEGORY_NOTIFICATIONS: fragment = new NotificationsPreferenceFragment(); break; - case PREFERENCE_CATEGORY_APP_PROTECTION: - fragment = new AppProtectionPreferenceFragment(); - break; case PREFERENCE_CATEGORY_APPEARANCE: fragment = new AppearancePreferenceFragment(); break; diff --git a/src/org/thoughtcrime/securesms/BaseActionBarActivity.java b/src/org/thoughtcrime/securesms/BaseActionBarActivity.java index 412d03897..e0a61bbfb 100644 --- a/src/org/thoughtcrime/securesms/BaseActionBarActivity.java +++ b/src/org/thoughtcrime/securesms/BaseActionBarActivity.java @@ -1,37 +1,26 @@ package org.thoughtcrime.securesms; -import android.content.Intent; import android.os.Build; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.core.app.ActivityCompat; -import androidx.core.app.ActivityOptionsCompat; -import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import android.view.ViewConfiguration; import android.view.WindowManager; -import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; import org.thoughtcrime.securesms.util.Prefs; -import org.thoughtcrime.securesms.util.ScreenLockUtil; import java.lang.reflect.Field; -import java.util.Timer; public abstract class BaseActionBarActivity extends AppCompatActivity { private static final String TAG = BaseActionBarActivity.class.getSimpleName(); - private Timer timer; - - private boolean isWaitingForResult; - private boolean isHiddenByScreenLock; - @Override protected void onCreate(Bundle savedInstanceState) { if (BaseActivity.isMenuWorkaroundRequired()) { @@ -40,67 +29,10 @@ public abstract class BaseActionBarActivity extends AppCompatActivity { super.onCreate(savedInstanceState); } - @Override - protected void onStart() { - if (ScreenLockUtil.isScreenLockEnabled(this) && ScreenLockUtil.getShouldLockApp() && !isWaitingForResult) { - ScreenLockUtil.applyScreenLock(this); - } else if (isHiddenByScreenLock) { - findViewById(android.R.id.content).setVisibility(View.VISIBLE); - isHiddenByScreenLock = false; - } - super.onStart(); - } - - @Override - protected void onStop() { - if (ScreenLockUtil.isScreenLockEnabled(this)) { - findViewById(android.R.id.content).setVisibility(View.GONE); - isHiddenByScreenLock = true; - } - super.onStop(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - isWaitingForResult = false; - if (requestCode == ScreenLockUtil.REQUEST_CODE_CONFIRM_CREDENTIALS) { - if (resultCode == RESULT_OK) { - ScreenLockUtil.setShouldLockApp(false); - } else { - Toast.makeText(this, R.string.screenlock_authentication_failed, Toast.LENGTH_SHORT).show(); - ScreenLockUtil.applyScreenLock(this); - } - } - } - @Override protected void onResume() { super.onResume(); initializeScreenshotSecurity(); - initializeScreenLockTimeout(); - } - - private void initializeScreenLockTimeout() { - if (ScreenLockUtil.isScreenLockTimeoutEnabled(this)) { - timer = ScreenLockUtil.scheduleScreenLockTimer(timer, this); - } - } - - @Override - protected void onPause() { - super.onPause(); - tearDownScreenLockTimeout(); - } - - private void tearDownScreenLockTimeout() { - ScreenLockUtil.cancelScreenLockTimer(timer); - } - - @Override - public void onUserInteraction() { - super.onUserInteraction(); - initializeScreenLockTimeout(); } @Override @@ -145,14 +77,6 @@ public abstract class BaseActionBarActivity extends AppCompatActivity { } } - @Override - public void startActivityForResult(Intent intent, int requestCode) { - super.startActivityForResult(intent, requestCode); - if (requestCode != -1) { - isWaitingForResult = true; - } - } - public void makeSearchMenuVisible(final Menu menu, final MenuItem searchItem, boolean visible) { for (int i = 0; i < menu.size(); ++i) { MenuItem item = menu.getItem(i); diff --git a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java index 0a2ff83db..64596dca9 100644 --- a/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java +++ b/src/org/thoughtcrime/securesms/connect/ApplicationDcContext.java @@ -60,17 +60,17 @@ public class ApplicationDcContext extends DcContext { // screen-lock is deprecated, inform users still using it try { - if (!Prefs.getBooleanPreference(context, "pref_android_screen_lock_checked", false)) { - Prefs.setBooleanPreference(context, "pref_android_screen_lock_checked", true); + if (!Prefs.getBooleanPreference(context, "pref_android_screen_lock_checked_1", false)) { + Prefs.setBooleanPreference(context, "pref_android_screen_lock_checked_1", true); if (Prefs.isScreenLockEnabled(context)) { - Prefs.setBooleanPreference(context, "pref_android_screen_lock_keep_for_now", true); + Prefs.setScreenLockEnabled(context, false); DcMsg msg = new DcMsg(this, DcMsg.DC_MSG_TEXT); - msg.setText("⚠️ You are using the function \"Screen lock\" " + - "that will be removed in one of the next versions for the following reasons:\n" + + msg.setText("⚠️ You were using the function \"Screen lock\" " + + "that was removed for the following reasons:\n" + "\n" + - "• It does not add much protection as one just has to repeat the system secret.\n" + + "• It did not add much protection as one just has to repeat the system secret.\n" + "\n" + - "• It is hard to maintain across different Android versions and is not even doable on some." + + "• It was hard to maintain across different Android versions and is not even doable on some." + " We like to put the resources to other things.\n" + "\n" + "• It is not planned/possible on iOS or Desktop this way" + @@ -80,7 +80,7 @@ public class ApplicationDcContext extends DcContext { "\n" + "\uD83D\uDC49 For the future, we suggest to keep your phone locked " + "or use an appropriate app or check the device settings."); - addDeviceMsg("android-screen-lock-deprecated14", msg); + addDeviceMsg("android-screen-lock-deprecated17", msg); } } } catch (Exception e) { diff --git a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java index a8ebcc16e..45345f29f 100644 --- a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java @@ -6,15 +6,16 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.preference.CheckBoxPreference; import androidx.preference.Preference; -import android.util.Log; -import android.view.View; -import android.widget.EditText; -import android.widget.Toast; import com.b44t.messenger.DcContext; @@ -24,6 +25,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.connect.DcEventCenter; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.permissions.Permissions; +import org.thoughtcrime.securesms.util.Prefs; import org.thoughtcrime.securesms.util.ScreenLockUtil; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.views.ProgressDialog; @@ -95,6 +97,9 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment Preference manageKeys = this.findPreference("pref_manage_keys"); manageKeys.setOnPreferenceClickListener(new ManageKeysListener()); + Preference screenSecurity = this.findPreference(Prefs.SCREEN_SECURITY_PREF); + screenSecurity.setOnPreferenceChangeListener(new ScreenShotSecurityListener()); + Preference submitDebugLog = this.findPreference("pref_view_log"); submitDebugLog.setOnPreferenceClickListener(new ViewLogListener()); @@ -169,6 +174,16 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment } } + private class ScreenShotSecurityListener implements Preference.OnPreferenceChangeListener { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean enabled = (Boolean) newValue; + Prefs.setScreenSecurityEnabled(getContext(), enabled); + Toast.makeText(getContext(), R.string.pref_screen_security_please_restart_hint, Toast.LENGTH_LONG).show(); + return true; + } + } + private class ViewLogListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { diff --git a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java deleted file mode 100644 index e61e351df..000000000 --- a/src/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ /dev/null @@ -1,140 +0,0 @@ -package org.thoughtcrime.securesms.preferences; - -import android.app.Activity; -import android.app.KeyguardManager; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.provider.Settings; -import androidx.annotation.Nullable; -import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; - -import android.widget.Toast; - -import org.thoughtcrime.securesms.ApplicationPreferencesActivity; -import org.thoughtcrime.securesms.R; -import org.thoughtcrime.securesms.components.SwitchPreferenceCompat; -import org.thoughtcrime.securesms.util.Prefs; -import org.thoughtcrime.securesms.util.ScreenLockUtil; - -import java.util.concurrent.TimeUnit; - -import mobi.upod.timedurationpicker.TimeDurationPickerDialog; - -public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment { - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - } - - @Override - public void onCreate(Bundle paramBundle) { - super.onCreate(paramBundle); - - this.findPreference(Prefs.SCREEN_LOCK).setOnPreferenceChangeListener(new ScreenLockListener()); - this.findPreference(Prefs.CHANGE_PASSPHRASE_PREF).setOnPreferenceClickListener(new ChangePassphraseClickListener()); - this.findPreference(Prefs.SCREEN_LOCK_TIMEOUT_INTERVAL_PREF).setOnPreferenceClickListener(new LockIntervalClickListener()); - this.findPreference(Prefs.SCREEN_SECURITY_PREF).setOnPreferenceChangeListener(new ScreenShotSecurityListener()); - - initializeVisibility(); - } - - @Override - public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.preferences_app_protection); - } - - @Override - public void onResume() { - super.onResume(); - ((ApplicationPreferencesActivity) getActivity()).getSupportActionBar().setTitle(R.string.pref_app_access); - initializePassphraseTimeoutSummary(); - } - - private void initializePassphraseTimeoutSummary() { - int timeoutSeconds = Prefs.getScreenLockTimeoutInterval(getActivity()); - this.findPreference(Prefs.SCREEN_LOCK_TIMEOUT_INTERVAL_PREF) - .setSummary(getResources().getQuantityString(R.plurals.n_minutes, timeoutSeconds, timeoutSeconds / 60)); - } - - private void initializeVisibility() { - KeyguardManager keyguardManager = (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE); - SwitchPreferenceCompat screenLockPreference = (SwitchPreferenceCompat) findPreference(Prefs.SCREEN_LOCK); - if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP || keyguardManager == null || !keyguardManager.isKeyguardSecure()) { - screenLockPreference.setChecked(false); - screenLockPreference.setEnabled(false); - } - if (!screenLockPreference.isChecked()) { - manageScreenLockChildren(false); - } - - // screen-lock is deprecated - try { - if (!Prefs.getBooleanPreference(getContext(), "pref_android_screen_lock_keep_for_now", false)) { - PreferenceCategory screenLockCategory = findPreference("pref_android_screen_lock_category"); - screenLockCategory.setVisible(false); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void manageScreenLockChildren(boolean enable) { - SwitchPreferenceCompat timeoutPreference = (SwitchPreferenceCompat) findPreference(Prefs.SCREEN_LOCK_TIMEOUT_PREF); - timeoutPreference.setEnabled(enable); - findPreference(Prefs.SCREEN_LOCK_TIMEOUT_INTERVAL_PREF).setEnabled(enable); - if (!enable) { - timeoutPreference.setChecked(false); - } - } - - private class ScreenShotSecurityListener implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean enabled = (Boolean) newValue; - Prefs.setScreenSecurityEnabled(getContext(), enabled); - Toast.makeText(getContext(), R.string.pref_screen_security_please_restart_hint, Toast.LENGTH_LONG).show(); - return true; - } - } - - private class ScreenLockListener implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean enabled = (Boolean) newValue; - manageScreenLockChildren(enabled); - Prefs.setScreenLockEnabled(getContext(), enabled); - ScreenLockUtil.setShouldLockApp(false); - return true; - } - } - - private class ChangePassphraseClickListener implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); - startActivity(intent); - return true; - } - } - - private class LockIntervalClickListener implements Preference.OnPreferenceClickListener { - - @Override - public boolean onPreferenceClick(Preference preference) { - new TimeDurationPickerDialog(getContext(), (view, duration) -> { - int timeoutSeconds = (int) Math.max(TimeUnit.MILLISECONDS.toSeconds(duration), 60); - - Prefs.setScreenLockTimeoutInterval(getActivity(), timeoutSeconds); - - initializePassphraseTimeoutSummary(); - - }, 0).show(); - - return true; - } - } - -} diff --git a/src/org/thoughtcrime/securesms/util/Prefs.java b/src/org/thoughtcrime/securesms/util/Prefs.java index 726729945..a6fc58dc5 100644 --- a/src/org/thoughtcrime/securesms/util/Prefs.java +++ b/src/org/thoughtcrime/securesms/util/Prefs.java @@ -31,7 +31,6 @@ public class Prefs { private static final String TAG = Prefs.class.getSimpleName(); - public static final String CHANGE_PASSPHRASE_PREF = "pref_change_passphrase"; public static final String DISABLE_PASSPHRASE_PREF = "pref_disable_passphrase"; public static final String THEME_PREF = "pref_theme"; public static final String LANGUAGE_PREF = "pref_language"; @@ -43,8 +42,6 @@ public class Prefs { private static final String NOTIFICATION_PREF = "pref_key_enable_notifications"; public static final String LED_COLOR_PREF = "pref_led_color"; private static final String CHAT_RINGTONE = "pref_chat_ringtone_"; // followed by chat-id - public static final String SCREEN_LOCK_TIMEOUT_INTERVAL_PREF = "pref_timeout_interval"; - public static final String SCREEN_LOCK_TIMEOUT_PREF = "pref_timeout_passphrase"; public static final String SCREEN_SECURITY_PREF = "pref_screen_security"; private static final String ENTER_SENDS_PREF = "pref_enter_sends"; private static final String PROMPTED_DOZE_MSG_ID_PREF = "pref_prompted_doze_msg_id"; @@ -144,18 +141,6 @@ public class Prefs { return getStringPreference(context, THEME_PREF, DynamicTheme.systemThemeAvailable() ? DynamicTheme.SYSTEM : DynamicTheme.LIGHT); } - public static boolean isScreenLockTimeoutEnabled(Context context) { - return getBooleanPreference(context, SCREEN_LOCK_TIMEOUT_PREF, false); - } - - public static int getScreenLockTimeoutInterval(Context context) { - return getIntegerPreference(context, SCREEN_LOCK_TIMEOUT_INTERVAL_PREF, 5 * 60); - } - - public static void setScreenLockTimeoutInterval(Context context, int interval) { - setIntegerPrefrence(context, SCREEN_LOCK_TIMEOUT_INTERVAL_PREF, interval); - } - public static String getLanguage(Context context) { return getStringPreference(context, LANGUAGE_PREF, "zz"); } diff --git a/src/org/thoughtcrime/securesms/util/ScreenLockUtil.java b/src/org/thoughtcrime/securesms/util/ScreenLockUtil.java index a590fa96d..eccefe7f2 100644 --- a/src/org/thoughtcrime/securesms/util/ScreenLockUtil.java +++ b/src/org/thoughtcrime/securesms/util/ScreenLockUtil.java @@ -7,19 +7,10 @@ import android.content.Intent; import org.thoughtcrime.securesms.R; -import java.util.Timer; -import java.util.TimerTask; - public class ScreenLockUtil { public static final int REQUEST_CODE_CONFIRM_CREDENTIALS = 1001; - private static boolean shouldLockApp = true; - - public static void applyScreenLock(Activity activity) { - applyScreenLock(activity, REQUEST_CODE_CONFIRM_CREDENTIALS); - } - public static boolean applyScreenLock(Activity activity, int requestCode) { KeyguardManager keyguardManager = (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE); Intent intent; @@ -33,44 +24,7 @@ public class ScreenLockUtil { return false; } - public static boolean isScreenLockEnabled(Context context) { - return isScreenLockAvailable() && Prefs.isScreenLockEnabled(context); - } - private static boolean isScreenLockAvailable() { return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP; } - - public static boolean isScreenLockTimeoutEnabled(Context context) { - return isScreenLockAvailable() && Prefs.isScreenLockTimeoutEnabled(context); - } - - public static Timer scheduleScreenLockTimer(Timer timer, Activity activity) { - cancelScreenLockTimer(timer); - Timer newTimer = new Timer(); - newTimer.schedule(new TimerTask() { - @Override - public void run() { - if (isScreenLockTimeoutEnabled(activity)) { - ScreenLockUtil.applyScreenLock(activity); - } - } - }, Prefs.getScreenLockTimeoutInterval(activity) * 1000); - return newTimer; - } - - public static void cancelScreenLockTimer(Timer timer) { - if (timer != null) { - timer.cancel(); - } - } - - public static boolean getShouldLockApp() { - return shouldLockApp; - } - - public static void setShouldLockApp(boolean newShouldLockApp) { - shouldLockApp = newShouldLockApp; - } - }