2 Коміти 75648d5a35 ... 1f867d89a2

Автор SHA1 Опис Дата
  hezihao 1f867d89a2 Merge remote-tracking branch 'origin/v1.0.2' into v1.0.2 6 місяців тому
  hezihao 11da44b987 [feat]键盘插件,修复平板下的小窗模式中,显示输入法选择透明Activity,会导致透明Activity显示为小窗的问题 6 місяців тому

+ 3 - 0
plugins/keyboard_android/android/build.gradle

@@ -85,6 +85,9 @@ android {
         // 让Service支持Jetpack Lifecycle组件
         implementation "androidx.lifecycle:lifecycle-service:2.6.1"
 
+        // App前后台判断
+        implementation  "androidx.lifecycle:lifecycle-process:2.9.0"
+
         // Retrofit
         implementation('com.squareup.retrofit2:retrofit:2.9.0')
         implementation('com.squareup.retrofit2:converter-gson:2.9.0')

+ 12 - 4
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/keyboard/InputMethodPickerActivity.kt

@@ -7,6 +7,8 @@ import android.content.Intent
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.ProcessLifecycleOwner
 import com.atmob.keyboard_android.util.InputMethodUtil
 import com.atmob.keyboard_android.util.LogUtil
 
@@ -23,10 +25,16 @@ class InputMethodPickerActivity : Activity() {
          * 启动
          */
         fun start(context: Context) {
-            val intent = Intent(context, InputMethodPickerActivity::class.java)
-            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
-            val options = ActivityOptions.makeCustomAnimation(context, 0, 0)
-            context.startActivity(intent, options.toBundle())
+            // App在前台,直接显示输入法选择弹窗,如果统一都用透明Activity来处理,在平板下的小窗模式中,会导致透明Activity显示为小窗
+            if (ProcessLifecycleOwner.get().lifecycle.currentState == Lifecycle.State.RESUMED) {
+                InputMethodUtil.showInputMethodPicker(context)
+            } else {
+                // 在后台,使用一个透明的Activity来触发输入法选择器
+                val intent = Intent(context, InputMethodPickerActivity::class.java)
+                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
+                val options = ActivityOptions.makeCustomAnimation(context, 0, 0)
+                context.startActivity(intent, options.toBundle())
+            }
         }
     }