@@ -3,27 +3,45 @@ package com.osfans.trime.util
33import android.content.ComponentName
44import android.content.Context
55import android.content.Intent
6+ import android.os.Build
67import android.provider.Settings
8+ import com.osfans.trime.BuildConfig
79import com.osfans.trime.ime.core.TrimeInputMethodService
810import splitties.systemservices.inputMethodManager
911import timber.log.Timber
1012
1113object InputMethodUtils {
12- private val serviceName =
14+ private val serviceName = TrimeInputMethodService ::class .java.name
15+ private val componentName =
1316 ComponentName (appContext, TrimeInputMethodService ::class .java).flattenToShortString()
1417
1518 private fun getSecureSettings (name : String ) = Settings .Secure .getString(appContext.contentResolver, name)
1619
1720 fun checkIsTrimeEnabled (): Boolean {
18- val activeImeIds = getSecureSettings(Settings .Secure .ENABLED_INPUT_METHODS ) ? : " (none)"
19- Timber .i(" List of active IMEs: $activeImeIds " )
20- return activeImeIds.split(" :" ).contains(serviceName)
21+ return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .UPSIDE_DOWN_CAKE ) {
22+ inputMethodManager.enabledInputMethodList.also {
23+ Timber .i(" List of active IMEs: $it " )
24+ }.any {
25+ it.packageName == BuildConfig .APPLICATION_ID && it.serviceName == serviceName
26+ }
27+ } else {
28+ val activeImeIds = getSecureSettings(Settings .Secure .ENABLED_INPUT_METHODS ) ? : " (none)"
29+ Timber .i(" List of active IMEs: $activeImeIds " )
30+ activeImeIds.split(" :" ).contains(componentName)
31+ }
2132 }
2233
2334 fun checkIsTrimeSelected (): Boolean {
24- val selectedImeIds = getSecureSettings(Settings .Secure .DEFAULT_INPUT_METHOD ) ? : " (none)"
25- Timber .i(" Selected IME: $selectedImeIds " )
26- return selectedImeIds == serviceName
35+ return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .UPSIDE_DOWN_CAKE ) {
36+ inputMethodManager.currentInputMethodInfo?.let {
37+ Timber .i(" Selected IME: ${it.serviceName} " )
38+ it.packageName == BuildConfig .APPLICATION_ID && it.serviceName == serviceName
39+ } ? : false
40+ } else {
41+ val selectedImeIds = getSecureSettings(Settings .Secure .DEFAULT_INPUT_METHOD ) ? : " (none)"
42+ Timber .i(" Selected IME: $selectedImeIds " )
43+ selectedImeIds == componentName
44+ }
2745 }
2846
2947 fun showImeEnablerActivity (context : Context ) = context.startActivity(Intent (Settings .ACTION_INPUT_METHOD_SETTINGS ))
0 commit comments