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
This commit is contained in:
Chilun
2019-03-20 15:04:38 +08:00
committed by Chilun Huang
parent a761a0d585
commit 272ff626cb

View File

@@ -26,12 +26,11 @@ import android.content.Intent;
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.fragment.app.FragmentManager;
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 class SecondaryDisplayLauncher extends FragmentActivity implements AppPic
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);
}