From 180bd179c53418a1d22a4cda7b3e86f30958fbd8 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 1 Jun 2025 13:13:00 +0200 Subject: [PATCH] move device locked check to common place --- .../helium314/keyboard/compat/IsLockedCompat.kt | 13 +++++++++++++ .../keyboard/keyboard/KeyboardLayoutSet.java | 15 ++++----------- .../latin/suggestions/SuggestionStripView.kt | 15 +++------------ 3 files changed, 20 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt diff --git a/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt b/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt new file mode 100644 index 000000000..59d406afe --- /dev/null +++ b/app/src/main/java/helium314/keyboard/compat/IsLockedCompat.kt @@ -0,0 +1,13 @@ +package helium314.keyboard.compat + +import android.app.KeyguardManager +import android.content.Context +import android.os.Build + +fun isDeviceLocked(context: Context): Boolean { + val keyguardManager = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) + keyguardManager.isDeviceLocked + else + keyguardManager.isKeyguardLocked +} diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java index 2bdbbdc97..f9a188c0c 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardLayoutSet.java @@ -6,12 +6,11 @@ package helium314.keyboard.keyboard; -import android.app.KeyguardManager; import android.content.Context; -import android.os.Build; import android.text.InputType; import android.view.inputmethod.EditorInfo; +import helium314.keyboard.compat.IsLockedCompatKt; import helium314.keyboard.keyboard.internal.KeyboardBuilder; import helium314.keyboard.keyboard.internal.KeyboardIconsSet; import helium314.keyboard.keyboard.internal.KeyboardParams; @@ -207,14 +206,8 @@ public final class KeyboardLayoutSet { params.mEditorInfo = editorInfo; params.mIsPasswordField = InputTypeUtils.isPasswordInputType(editorInfo.inputType); - // When the device is still locked, features like showing the IME setting app need to - // be locked down. - final KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { - params.mDeviceLocked = km.isDeviceLocked(); - } else { - params.mDeviceLocked = km.isKeyguardLocked(); - } + // When the device is still locked, features like showing the IME setting app need to be locked down. + params.mDeviceLocked = IsLockedCompatKt.isDeviceLocked(context); } public static KeyboardLayoutSet buildEmojiClipBottomRow(final Context context, @Nullable final EditorInfo ei) { @@ -252,7 +245,7 @@ public final class KeyboardLayoutSet { mParams.mVoiceInputKeyEnabled = enabled; return this; } - + public Builder setNumberRowEnabled(final boolean enabled) { mParams.mNumberRowEnabled = enabled; return this; diff --git a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.kt b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.kt index c37577caf..cb95207c0 100644 --- a/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.kt +++ b/app/src/main/java/helium314/keyboard/latin/suggestions/SuggestionStripView.kt @@ -6,14 +6,12 @@ package helium314.keyboard.latin.suggestions import android.annotation.SuppressLint -import android.app.KeyguardManager import android.content.Context import android.content.SharedPreferences import android.content.SharedPreferences.OnSharedPreferenceChangeListener import android.graphics.Color import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable -import android.os.Build import android.text.TextUtils import android.util.AttributeSet import android.util.TypedValue @@ -31,6 +29,7 @@ import android.widget.RelativeLayout import android.widget.TextView import androidx.core.view.isVisible import helium314.keyboard.accessibility.AccessibilityUtils +import helium314.keyboard.compat.isDeviceLocked import helium314.keyboard.keyboard.KeyboardSwitcher import helium314.keyboard.keyboard.MainKeyboardView import helium314.keyboard.keyboard.PopupKeysPanel @@ -249,11 +248,7 @@ class SuggestionStripView(context: Context, attrs: AttributeSet?, defStyle: Int) fun setToolbarVisibility(toolbarVisible: Boolean) { // avoid showing toolbar keys when locked - val km = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - val locked = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) // todo: move this check to compat (also other uses) - km.isDeviceLocked - else - km.isKeyguardLocked + val locked = isDeviceLocked(context) pinnedKeys.isVisible = !locked && !toolbarVisible suggestionsStrip.isVisible = locked || !toolbarVisible toolbarContainer.isVisible = !locked && toolbarVisible @@ -609,11 +604,7 @@ class SuggestionStripView(context: Context, attrs: AttributeSet?, defStyle: Int) } // hide pinned keys if device is locked, and avoid expanding toolbar - val km = context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - val hideToolbarKeys = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) - km.isDeviceLocked - else - km.isKeyguardLocked + val hideToolbarKeys = isDeviceLocked(context) toolbarExpandKey.setOnClickListener(if (hideToolbarKeys || !toolbarIsExpandable) null else this) pinnedKeys.visibility = if (hideToolbarKeys) GONE else suggestionsStrip.visibility isExternalSuggestionVisible = false