From 69be24d5e65e530f2a1e5858066ae4f3b401c822 Mon Sep 17 00:00:00 2001 From: Natan Votre Date: Mon, 15 Jun 2020 15:28:50 -0300 Subject: [PATCH] [NY-10582]: [AN]: Reopening the keyboard when resuming the app. --- .../activities/support/WebViewFragment.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/support/WebViewFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/support/WebViewFragment.java index e0faeac0a8..6241c0113e 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/support/WebViewFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/support/WebViewFragment.java @@ -1,10 +1,12 @@ package com.nynja.mobile.communicator.ui.activities.support; +import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; +import android.view.inputmethod.InputMethodManager; import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; @@ -27,6 +29,12 @@ import butterknife.OnClick; public class WebViewFragment extends BaseFragment implements WebLinkView { + enum KeyboardState { + Inactive, + WasActive, + Active, + } + private static final String WEB_DATA_TYPE = "WEB_DATA_TYPE"; @InjectPresenter @@ -37,6 +45,8 @@ public class WebViewFragment extends BaseFragment implements WebLinkView { @BindView(R.id.header_tv) TextView mHeaderTv; + private KeyboardState kbdState = KeyboardState.Inactive; + public static WebViewFragment newInstance(String webDataType) { Bundle args = new Bundle(); @@ -58,6 +68,14 @@ public class WebViewFragment extends BaseFragment implements WebLinkView { webSettings.setJavaScriptCanOpenWindowsAutomatically(true); mWebView.setWebViewClient(new WebViewClient()); retrieveDataFromArgsAndSetData(getArguments()); + mWebView.addOnLayoutChangeListener((View v, int left, int top, int right, int bottom, + int oldLeft, int oldTop, int oldRight, int oldBottom) -> { + if (kbdState == KeyboardState.WasActive) { + InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); + inputMethodManager.showSoftInput(getActivity().getCurrentFocus(), InputMethodManager.SHOW_IMPLICIT); + kbdState = KeyboardState.Active; + } + }); } private void retrieveDataFromArgsAndSetData(Bundle args) { @@ -87,4 +105,11 @@ public class WebViewFragment extends BaseFragment implements WebLinkView { @Override public boolean getWheelVisibility() { return false; } + + @Override + public void onPause() { + super.onPause(); + InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + kbdState = imm.isAcceptingText() ? KeyboardState.WasActive : KeyboardState.Inactive; + } } -- GitLab