19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); you may not
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * use this file except in compliance with the License. You may obtain a copy of
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * License for the specific language governing permissions and limitations under
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view.inputmethod;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
19d68478467e3f837511196c80891d7245d0e163dfDianne Hackbornimport android.annotation.SdkConstant;
20d68478467e3f837511196c80891d7245d0e163dfDianne Hackbornimport android.annotation.SdkConstant.SdkConstantType;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.inputmethodservice.InputMethodService;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
234df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Projectimport android.os.ResultReceiver;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The InputMethod interface represents an input method which can generate key
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events and text, such as digital, email addresses, CJK characters, other
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * language characters, and etc., while handling various input events, and send
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the text back to the application that requests text input.  See
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link InputMethodManager} for more general information about the
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * architecture.
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Applications will not normally use this interface themselves, instead
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * relying on the standard interaction provided by
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.widget.TextView} and {@link android.widget.EditText}.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>Those implementing input methods should normally do so by deriving from
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link InputMethodService} or one of its subclasses.  When implementing
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an input method, the service component containing it must also supply
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a {@link #SERVICE_META_DATA} meta-data field, referencing an XML resource
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * providing details about the input method.  All input methods also must
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * require that clients hold the
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.Manifest.permission#BIND_INPUT_METHOD} in order to interact
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with the service; if this is not required, the system will not use that
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input method, because it can not trust that it is not compromised.
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>The InputMethod interface is actually split into two parts: the interface
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * here is the top-level interface to the input method, providing all
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * access to it, which only the system can access (due to the BIND_INPUT_METHOD
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * permission requirement).  In addition its method
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #createSession(android.view.inputmethod.InputMethod.SessionCallback)}
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can be called to instantate a secondary {@link InputMethodSession} interface
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * which is what clients use to communicate with the input method.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface InputMethod {
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is the interface name that a service implementing an input
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * method should say that it supports -- that is, this is the action it
59d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * uses for its intent filter.
60d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * To be supported, the service must also require the
61d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * {@link android.Manifest.permission#BIND_INPUT_METHOD} permission so
62d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn     * that other applications can not abuse it.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
64d68478467e3f837511196c80891d7245d0e163dfDianne Hackborn    @SdkConstant(SdkConstantType.SERVICE_ACTION)
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SERVICE_INTERFACE = "android.view.InputMethod";
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Name under which an InputMethod service component publishes information
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * about itself.  This meta-data must reference an XML resource containing
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>&lt;{@link android.R.styleable#InputMethod input-method}&gt;</code>
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag.
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final String SERVICE_META_DATA = "android.view.im";
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public interface SessionCallback {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void sessionCreated(InputMethodSession session);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Called first thing after an input method is created, this supplies a
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * unique token for the session it has with the system service.  It is
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * needed to identify itself with the service to validate its operations.
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This token <strong>must not</strong> be passed to applications, since
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * it grants special priviledges that should not be given to applications.
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>Note: to protect yourself from malicious clients, you should only
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * accept the first token given to you.  Any after that may come from the
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * client.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void attachToken(IBinder token);
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Bind a new application environment in to the input method, so that it
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can later start and stop input processing.
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Typically this method is called when this input method is enabled in an
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * application for the first time.
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param binding Information about the application window that is binding
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the input method.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see InputBinding
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #unbindInput()
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void bindInput(InputBinding binding);
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unbind an application environment, called when the information previously
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * set by {@link #bindInput} is no longer valid for this input method.
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Typically this method is called when the application changes to be
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * non-foreground.
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void unbindInput();
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is called when the application starts to receive text and it
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is ready for this input method to process received events and send result
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * text back to the application.
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param inputConnection Optional specific input connection for
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * communicating with the text box; if null, you should use the generic
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * bound input connection.
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param info Information about the text box (typically, an EditText)
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        that requests input.
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see EditorInfo
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void startInput(InputConnection inputConnection, EditorInfo info);
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method is called when the state of this input method needs to be
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * reset.
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p>
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Typically, this method is called when the input focus is moved from one
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * text box to another.
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param inputConnection Optional specific input connection for
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * communicating with the text box; if null, you should use the generic
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * bound input connection.
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param attribute The attribute of the text box (typically, a EditText)
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        that requests input.
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see EditorInfo
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void restartInput(InputConnection inputConnection, EditorInfo attribute);
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Create a new {@link InputMethodSession} that can be handed to client
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * applications for interacting with the input method.  You can later
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * use {@link #revokeSession(InputMethodSession)} to destroy the session
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * so that it can no longer be used by any clients.
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param callback Interface that is called with the newly created session.
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void createSession(SessionCallback callback);
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Control whether a particular input method session is active.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param session The {@link InputMethodSession} previously provided through
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SessionCallback.sessionCreated() that is to be changed.
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setSessionEnabled(InputMethodSession session, boolean enabled);
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disable and destroy a session that was previously created with
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #createSession(android.view.inputmethod.InputMethod.SessionCallback)}.
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * After this call, the given session interface is no longer active and
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calls on it will fail.
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param session The {@link InputMethodSession} previously provided through
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * SessionCallback.sessionCreated() that is to be revoked.
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void revokeSession(InputMethodSession session);
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1804df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Flag for {@link #showSoftInput}: this show has been explicitly
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * requested by the user.  If not set, the system has decided it may be
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a good idea to show the input method based on a navigation operation
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in the UI.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SHOW_EXPLICIT = 0x00001;
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1884df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Flag for {@link #showSoftInput}: this show has been forced to
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * happen by the user.  If set, the input method should remain visible
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * until deliberated dismissed by the user in its UI.
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final int SHOW_FORCED = 0x00002;
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that any soft input part of the input method be shown to the user.
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1974df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * @param flags Provides additional information about the show request.
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Currently may be 0 or have the bit {@link #SHOW_EXPLICIT} set.
1994df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * @param resultReceiver The client requesting the show may wish to
2004df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * be told the impact of their request, which should be supplied here.
2014df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * The result code should be
2024df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_UNCHANGED_SHOWN InputMethodManager.RESULT_UNCHANGED_SHOWN},
2034df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_UNCHANGED_HIDDEN InputMethodManager.RESULT_UNCHANGED_HIDDEN},
2044df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_SHOWN InputMethodManager.RESULT_SHOWN}, or
2054df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_HIDDEN InputMethodManager.RESULT_HIDDEN}.
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2074df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public void showSoftInput(int flags, ResultReceiver resultReceiver);
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Request that any soft input part of the input method be hidden from the user.
2114df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * @param flags Provides additional information about the show request.
2124df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * Currently always 0.
2134df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * @param resultReceiver The client requesting the show may wish to
2144df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * be told the impact of their request, which should be supplied here.
2154df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * The result code should be
2164df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_UNCHANGED_SHOWN InputMethodManager.RESULT_UNCHANGED_SHOWN},
2174df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_UNCHANGED_HIDDEN InputMethodManager.RESULT_UNCHANGED_HIDDEN},
2184df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_SHOWN InputMethodManager.RESULT_SHOWN}, or
2194df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project     * {@link InputMethodManager#RESULT_HIDDEN InputMethodManager.RESULT_HIDDEN}.
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2214df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    public void hideSoftInput(int flags, ResultReceiver resultReceiver);
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
223