Skip to content

Commit da18332

Browse files
WhiredPlanckBambooin
authored andcommitted
refactor(util): fine tune ImeUtils (InputMethodUtils)
1 parent f5ca6bb commit da18332

File tree

3 files changed

+53
-37
lines changed

3 files changed

+53
-37
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.osfans.trime.common
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import android.provider.Settings
6+
import android.view.inputmethod.InputMethodManager
7+
import timber.log.Timber
8+
9+
object InputMethodUtils {
10+
private const val IME_ID: String = "com.osfans.trime/.TrimeImeService"
11+
12+
fun checkIsTrimeEnabled(context: Context): Boolean {
13+
val activeImeIds = Settings.Secure.getString(
14+
context.contentResolver,
15+
Settings.Secure.ENABLED_INPUT_METHODS
16+
) ?: "(none)"
17+
Timber.i("List of active IMEs: $activeImeIds")
18+
return activeImeIds.split(":").contains(IME_ID)
19+
}
20+
21+
fun checkisTrimeSelected(context: Context): Boolean {
22+
val selectedImeIds = Settings.Secure.getString(
23+
context.contentResolver,
24+
Settings.Secure.DEFAULT_INPUT_METHOD
25+
) ?: "(none)"
26+
Timber.i("Selected IME: $selectedImeIds")
27+
return selectedImeIds == IME_ID
28+
}
29+
30+
fun showImeEnablerActivity(context: Context) {
31+
val intent = Intent()
32+
intent.action = Settings.ACTION_INPUT_METHOD_SETTINGS
33+
intent.addCategory(Intent.CATEGORY_DEFAULT)
34+
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
35+
context.startActivity(intent)
36+
}
37+
38+
fun showImePicker(context: Context): Boolean {
39+
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
40+
return if (imm != null) {
41+
imm.showInputMethodPicker()
42+
true
43+
} else {
44+
false
45+
}
46+
}
47+
}

app/src/main/java/com/osfans/trime/settings/PrefMainActivity.kt

+6-10
Original file line numberDiff line numberDiff line change
@@ -214,26 +214,22 @@ class PrefMainActivity :
214214
class PrefFragment : PreferenceFragmentCompat() {
215215
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
216216
setPreferencesFromResource(R.xml.prefs, rootKey)
217-
if (ImeUtils.checkIfImeIsEnabled(requireContext())) {
217+
if (InputMethodUtils.checkIsTrimeEnabled(requireContext())) {
218218
findPreference<Preference>("pref_enable")?.isVisible = false
219219
}
220-
if (ImeUtils.checkIfImeIsSelected(requireContext())) {
220+
if (InputMethodUtils.checkisTrimeSelected(requireContext())) {
221221
findPreference<Preference>("pref_select")?.isVisible = false
222222
}
223223
}
224224

225225
override fun onPreferenceTreeClick(preference: Preference?): Boolean {
226226
return when (preference?.key) {
227227
"pref_enable" -> { // 啓用
228-
val intent = Intent()
229-
intent.action = Settings.ACTION_INPUT_METHOD_SETTINGS
230-
intent.addCategory(Intent.CATEGORY_DEFAULT)
231-
startActivity(intent)
228+
InputMethodUtils.showImeEnablerActivity(requireContext())
232229
true
233230
}
234231
"pref_select" -> { // 切換
235-
(activity as PrefMainActivity).imeManager.showInputMethodPicker()
236-
true
232+
InputMethodUtils.showImePicker(requireContext())
237233
}
238234
"pref_schemas" -> {
239235
SchemaPickerDialog(requireContext()).show()
@@ -245,10 +241,10 @@ class PrefMainActivity :
245241

246242
override fun onResume() { // 如果同文已被启用/选用,则隐藏设置项
247243
super.onResume()
248-
if (ImeUtils.checkIfImeIsEnabled(requireContext())) {
244+
if (InputMethodUtils.checkIsTrimeEnabled(requireContext())) {
249245
findPreference<Preference>("pref_enable")?.isVisible = false
250246
}
251-
if (ImeUtils.checkIfImeIsSelected(requireContext())) {
247+
if (InputMethodUtils.checkisTrimeSelected(requireContext())) {
252248
findPreference<Preference>("pref_select")?.isVisible = false
253249
}
254250
}

app/src/main/java/com/osfans/trime/util/ImeUtils.kt

-27
This file was deleted.

0 commit comments

Comments
 (0)