diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 8e6b7ad4adbcf..f8ed35e9afdec 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -2509,15 +2509,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub unbindCurrentMethodLocked(); - setCurIntent(new Intent(InputMethod.SERVICE_INTERFACE)); - getCurIntent().setComponent(info.getComponent()); - getCurIntent().putExtra(Intent.EXTRA_CLIENT_LABEL, - com.android.internal.R.string.input_method_binding_label); - getCurIntent().putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivity( - mContext, 0, new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS), - PendingIntent.FLAG_IMMUTABLE)); + Intent intent = createImeBindingIntent(info.getComponent()); + setCurIntent(intent); - if (bindCurrentInputMethodServiceLocked(getCurIntent(), this, mImeConnectionBindFlags)) { + if (bindCurrentInputMethodServiceLocked(intent, this, mImeConnectionBindFlags)) { setLastBindTime(SystemClock.uptimeMillis()); setHasConnection(true); setCurId(info.getId()); @@ -2537,10 +2532,22 @@ public class InputMethodManagerService extends IInputMethodManager.Stub null, null, getCurId(), getSequenceNumber(), false); } setCurIntent(null); - Slog.w(TAG, "Failure connecting to input method service: " + getCurIntent()); + Slog.w(TAG, "Failure connecting to input method service: " + intent); return InputBindResult.IME_NOT_CONNECTED; } + @NonNull + private Intent createImeBindingIntent(ComponentName component) { + Intent intent = new Intent(InputMethod.SERVICE_INTERFACE); + intent.setComponent(component); + intent.putExtra(Intent.EXTRA_CLIENT_LABEL, + com.android.internal.R.string.input_method_binding_label); + intent.putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivity( + mContext, 0, new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS), + PendingIntent.FLAG_IMMUTABLE)); + return intent; + } + @FunctionalInterface interface ImeDisplayValidator { @DisplayImePolicy int getDisplayImePolicy(int displayId);