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 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyCharacterMap; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The InputConnection interface is the communication channel from an 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link InputMethod} back to the application that is receiving its input. It 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is used to perform such things as reading text around the cursor, 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * committing text to the text box, and sending raw key events to the application. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 299567a66a5e6f49dd8495fb5f6e2efb9f32e84b35Dianne Hackborn * <p>Applications should never directly implement this interface, but instead 309567a66a5e6f49dd8495fb5f6e2efb9f32e84b35Dianne Hackborn * subclass from {@link BaseInputConnection}. This will ensure that the 319567a66a5e6f49dd8495fb5f6e2efb9f32e84b35Dianne Hackborn * application does not break when new methods are added to the interface. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface InputConnection { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for use with {@link #getTextAfterCursor} and 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getTextBeforeCursor} to have style information returned along 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with the text. If not set, you will receive only the raw text. If 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * set, you may receive a complex CharSequence of both text and style 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * spans. 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static final int GET_TEXT_WITH_STYLES = 0x0001; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for use with {@link #getExtractedText} to indicate you would 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * like to receive updates when the extracted text changes. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int GET_EXTRACTED_TEXT_MONITOR = 0x0001; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get <var>n</var> characters of text before the current cursor position. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This method may fail either if the input connection has become invalid 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (such as its process crashing) or the client is taking too long to 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * respond with the text (it is given a couple seconds to return). 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In either case, a null is returned. 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param n The expected length of the text. 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags Supplies additional options controlling how the text is 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned. May be either 0 or {@link #GET_TEXT_WITH_STYLES}. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the text before the cursor position; the length of the 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned text might be less than <var>n</var>. 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CharSequence getTextBeforeCursor(int n, int flags); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get <var>n</var> characters of text after the current cursor position. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This method may fail either if the input connection has become invalid 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (such as its process crashing) or the client is taking too long to 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * respond with the text (it is given a couple seconds to return). 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In either case, a null is returned. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param n The expected length of the text. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags Supplies additional options controlling how the text is 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned. May be either 0 or {@link #GET_TEXT_WITH_STYLES}. 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the text after the cursor position; the length of the 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned text might be less than <var>n</var>. 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CharSequence getTextAfterCursor(int n, int flags); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 84a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * Gets the selected text, if any. 85a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * 86a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * <p>This method may fail if either the input connection has become 87a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * invalid (such as its process crashing) or the client is taking too 88a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * long to respond with the text (it is given a couple of seconds to return). 89a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * In either case, a null is returned. 90a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * 91a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * @param flags Supplies additional options controlling how the text is 92a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * returned. May be either 0 or {@link #GET_TEXT_WITH_STYLES}. 93a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * @return Returns the text that is currently selected, if any, or null if 94a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * no text is selected. 95a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani */ 96a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani public CharSequence getSelectedText(int flags); 97a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani 98a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani /** 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve the current capitalization mode in effect at the current 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * cursor position in the text. See 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.text.TextUtils#getCapsMode TextUtils.getCapsMode} for 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * more information. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This method may fail either if the input connection has become invalid 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (such as its process crashing) or the client is taking too long to 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * respond with the text (it is given a couple seconds to return). 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In either case, a 0 is returned. 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param reqModes The desired modes to retrieve, as defined by 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.text.TextUtils#getCapsMode TextUtils.getCapsMode}. These 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * constants are defined so that you can simply pass the current 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link EditorInfo#inputType TextBoxAttribute.contentType} value 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * directly in to here. 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the caps mode flags that are in effect. 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getCursorCapsMode(int reqModes); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retrieve the current text in the input connection's editor, and monitor 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for any changes to it. This function returns with the current text, 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and optionally the input connection can send updates to the 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * input method when its text changes. 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>This method may fail either if the input connection has become invalid 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (such as its process crashing) or the client is taking too long to 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * respond with the text (it is given a couple seconds to return). 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In either case, a null is returned. 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param request Description of how the text should be returned. 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param flags Additional options to control the client, either 0 or 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #GET_EXTRACTED_TEXT_MONITOR}. 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns an ExtractedText object describing the state of the 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * text view and containing the extracted text itself. 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ExtractedText getExtractedText(ExtractedTextRequest request, 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int flags); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1410c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * Delete <var>beforeLength</var> characters of text before the current cursor 1420c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * position, and delete <var>afterLength</var> characters of text after the 14339d23bddef15cd3f5fd2f336afe193c912d32ac3Fabrice Di Meglio * current cursor position, excluding composing text. Before and after refer 14439d23bddef15cd3f5fd2f336afe193c912d32ac3Fabrice Di Meglio * to the order of the characters in the string, not to their visual representation. 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1460c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * 1470c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * @param beforeLength The number of characters to be deleted before the 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * current cursor position. 1490c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * @param afterLength The number of characters to be deleted after the 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * current cursor position. 1510c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio * 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1550c95dd3f4f02564fab9b86a221bbcbb4aafc2981Fabrice Di Meglio public boolean deleteSurroundingText(int beforeLength, int afterLength); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set composing text around the current cursor position with the given text, 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and set the new cursor position. Any composing text set previously will 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be removed automatically. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The composing text with styles if necessary. If no style 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * object attached to the text, the default style for composing text 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is used. See {#link android.text.Spanned} for how to attach style 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * object to the text. {#link android.text.SpannableString} and 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {#link android.text.SpannableStringBuilder} are two 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementations of the interface {#link android.text.Spanned}. 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param newCursorPosition The new cursor position around the text. If 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * > 0, this is relative to the end of the text - 1; if <= 0, this 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is relative to the start of the text. So a value of 1 will 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always advance you to the position after the full text being 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inserted. Note that this means you can't position the cursor 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * within the text, because the editor can make modifications to 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the text you are providing so it is not possible to correctly 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specify locations there. 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setComposingText(CharSequence text, int newCursorPosition); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 183a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * Mark a certain region of text as composing text. Any composing text set 184a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * previously will be removed automatically. The default style for composing 185a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * text is used. 186a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * 187a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * @param start the position in the text at which the composing region begins 188a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * @param end the position in the text at which the composing region ends 189a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * @return Returns true on success, false if the input connection is no longer 190a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani * valid. 191a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani */ 192a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani public boolean setComposingRegion(int start, int end); 193a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani 194a90b7f0125389b9e1040d2be82aad4ef74ea6071Amith Yamasani /** 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Have the text editor finish whatever composing text is currently 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * active. This simply leaves the text as-is, removing any special 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * composing styling or other state that was around it. The cursor 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * position remains unchanged. 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean finishComposingText(); 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Commit text to the text box and set the new cursor position. 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Any composing text set previously will be removed 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * automatically. 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The committed text. 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param newCursorPosition The new cursor position around the text. If 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * > 0, this is relative to the end of the text - 1; if <= 0, this 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is relative to the start of the text. So a value of 1 will 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * always advance you to the position after the full text being 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * inserted. Note that this means you can't position the cursor 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * within the text, because the editor can make modifications to 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the text you are providing so it is not possible to correctly 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specify locations there. 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean commitText(CharSequence text, int newCursorPosition); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Commit a completion the user has selected from the possible ones 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * previously reported to {@link InputMethodSession#displayCompletions 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * InputMethodSession.displayCompletions()}. This will result in the 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * same behavior as if the user had selected the completion from the 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * actual UI. 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param text The committed completion. 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean commitCompletion(CompletionInfo text); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 238cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * Commit a correction automatically performed on the raw user's input. A typical example would 239cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * be to correct typos using a dictionary. 240cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 241cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @param correctionInfo Detailed information about the correction. 242cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * 243cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne * @return True on success, false if the input connection is no longer valid. 244cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne */ 245cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne public boolean commitCorrection(CorrectionInfo correctionInfo); 246cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne 247cf9cf2f40efc4ccf3f73e6fdb07725d9c00c4f91Gilles Debunne /** 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set the selection of the text editor. To set the cursor position, 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * start and end should have the same value. 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean setSelection(int start, int end); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Have the editor perform an action it has said it can do. 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param editorAction This must be one of the action constants for 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link EditorInfo#imeOptions EditorInfo.editorType}, such as 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link EditorInfo#IME_ACTION_GO EditorInfo.EDITOR_ACTION_GO}. 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean performEditorAction(int editorAction); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Perform a context menu action on the field. The given id may be one of: 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.id#selectAll}, 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.id#startSelectingText}, {@link android.R.id#stopSelectingText}, 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.id#cut}, {@link android.R.id#copy}, 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.id#paste}, {@link android.R.id#copyUrl}, 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or {@link android.R.id#switchInputMethod} 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean performContextMenuAction(int id); 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tell the editor that you are starting a batch of editor operations. 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The editor will try to avoid sending you updates about its state 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * until {@link #endBatchEdit} is called. 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean beginBatchEdit(); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Tell the editor that you are done with a batch edit previously 286405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * initiated with {@link #beginBatchEdit}. 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean endBatchEdit(); 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Send a key event to the process that is currently attached through 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this input connection. The event will be dispatched like a normal 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * key event, to the currently focused; this generally is the view that 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is providing this InputConnection, but due to the asynchronous nature 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * of this protocol that can not be guaranteed and the focus may have 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * changed by the time the event is received. 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This method can be used to send key events to the application. For 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * example, an on-screen keyboard may use this method to simulate a hardware 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * keyboard. There are three types of standard keyboards, numeric (12-key), 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * predictive (20-key) and ALPHA (QWERTY). You can specify the keyboard type 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by specify the device id of the key event. 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p> 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You will usually want to set the flag 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link KeyEvent#FLAG_SOFT_KEYBOARD KeyEvent.FLAG_SOFT_KEYBOARD} on all 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * key event objects you give to this API; the flag will not be set 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for you. 310405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * 311405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * <p>Note that it's discouraged to send such key events in normal operation; 312405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * this is mainly for use with {@link android.text.InputType#TYPE_NULL} type 313405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * text fields. Use the {@link #commitText} family of methods to send text 314405bc51c5dc73846a4abdc325cd234eb2d37469fJean Chalard * to the application instead. 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param event The key event. 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyEvent 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyCharacterMap#NUMERIC 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyCharacterMap#PREDICTIVE 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyCharacterMap#ALPHA 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean sendKeyEvent(KeyEvent event); 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Clear the given meta key pressed states in the given input connection. 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param states The states to be cleared, may be one or more bits as 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * per {@link KeyEvent#getMetaState() KeyEvent.getMetaState()}. 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true on success, false if the input connection is no longer 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean clearMetaKeyStates(int states); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Called by the IME to tell the client when it switches between fullscreen 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and normal modes. This will normally be called for you by the standard 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation of {@link android.inputmethodservice.InputMethodService}. 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean reportFullscreenMode(boolean enabled); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * API to send private commands from an input method to its connected 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * editor. This can be used to provide domain-specific features that are 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * only known between certain input methods and their clients. Note that 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * because the InputConnection protocol is asynchronous, you have no way 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to get a result back or know if the client understood the command; you 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can use the information in {@link EditorInfo} to determine if 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a client supports a particular command. 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param action Name of the command to be performed. This <em>must</em> 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be a scoped name, i.e. prefixed with a package name you own, so that 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * different developers will not create conflicting commands. 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param data Any data to include with the command. 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns true if the command was sent (whether or not the 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * associated editor understood it), false if the input connection is no longer 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * valid. 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean performPrivateCommand(String action, Bundle data); 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 364