Hide keyboard while the home button get pressed
For multi-client IME, launcher need to call hideSoftInputFromWindow() by
using the InputMethodManager instance that mapped the presented display
while its home button get pressed.
Launcher 3 has already handled this part, but the secondary launcher
has not yet.
Bug: 120114697
Test: Manual verified that multi-client IME can be closed correctly.
Change-Id: I8959c3a470580452bfb95dbd4b4ce9268589000f
diff --git a/SecondaryDisplayLauncher/src/com/android/launcher3/SecondaryDisplayLauncher.java b/SecondaryDisplayLauncher/src/com/android/launcher3/SecondaryDisplayLauncher.java
index 12fa46b..0a2f18f 100644
--- a/SecondaryDisplayLauncher/src/com/android/launcher3/SecondaryDisplayLauncher.java
+++ b/SecondaryDisplayLauncher/src/com/android/launcher3/SecondaryDisplayLauncher.java
@@ -26,12 +26,11 @@
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
-import com.google.android.material.circularreveal.cardview.CircularRevealCardView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewAnimationUtils;
+import android.view.inputmethod.InputMethodManager;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.PopupMenu;
@@ -41,6 +40,9 @@
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory;
+import com.google.android.material.circularreveal.cardview.CircularRevealCardView;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
import java.util.HashSet;
import java.util.Set;
@@ -141,6 +143,16 @@
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
+
+ if (Intent.ACTION_MAIN.equals(intent.getAction())) {
+ // Hide keyboard.
+ final View v = getWindow().peekDecorView();
+ if (v != null && v.getWindowToken() != null) {
+ getSystemService(InputMethodManager.class).hideSoftInputFromWindow(
+ v.getWindowToken(), 0);
+ }
+ }
+
// A new intent will bring the launcher to top. Hide the app drawer to reset the state.
showAppDrawer(false);
}