Java 类android.view.inputmethod.ExtractedTextRequest 实例源码
项目:keepass2android
文件:KP2AKeyboard.java
private void checkReCorrectionOnStart() {
if (mReCorrectionEnabled && isPredictionOn()) {
// First get the cursor position. This is required by setOldSuggestions(), so that
// it can pass the correct range to setComposingRegion(). At this point, we don't
// have valid values for mLastSelectionStart/Stop because onUpdateSelection() has
// not been called yet.
InputConnection ic = getCurrentInputConnection();
if (ic == null) return;
ExtractedTextRequest etr = new ExtractedTextRequest();
etr.token = 0; // anything is fine here
ExtractedText et = ic.getExtractedText(etr, 0);
if (et == null) return;
mLastSelectionStart = et.startOffset + et.selectionStart;
mLastSelectionEnd = et.startOffset + et.selectionEnd;
// Then look for possible corrections in a delayed fashion
if (!TextUtils.isEmpty(et.text) && isCursorTouchingWord()) {
postUpdateOldSuggestions();
}
}
}
项目:AI-Powered-Intelligent-Banking-Platform
文件:InputConnectionCommandEditor.java
@Override
public boolean replace(String str1, String str2) {
boolean success = false;
mInputConnection.beginBatchEdit();
ExtractedText extractedText = mInputConnection.getExtractedText(new ExtractedTextRequest(), 0);
if (extractedText != null) {
CharSequence beforeCursor = extractedText.text;
//CharSequence beforeCursor = mInputConnection.getTextBeforeCursor(MAX_SELECTABLE_CONTEXT, 0);
Log.i("replace: " + beforeCursor);
int index = beforeCursor.toString().lastIndexOf(str1);
Log.i("replace: " + index);
if (index > 0) {
mInputConnection.setSelection(index, index);
mInputConnection.deleteSurroundingText(0, str1.length());
if (!str2.isEmpty()) {
mInputConnection.commitText(str2, 0);
}
success = true;
}
mInputConnection.endBatchEdit();
}
return success;
}
项目:KeePass2Android
文件:KP2AKeyboard.java
private void checkReCorrectionOnStart() {
if (mReCorrectionEnabled && isPredictionOn()) {
// First get the cursor position. This is required by setOldSuggestions(), so that
// it can pass the correct range to setComposingRegion(). At this point, we don't
// have valid values for mLastSelectionStart/Stop because onUpdateSelection() has
// not been called yet.
InputConnection ic = getCurrentInputConnection();
if (ic == null) return;
ExtractedTextRequest etr = new ExtractedTextRequest();
etr.token = 0; // anything is fine here
ExtractedText et = ic.getExtractedText(etr, 0);
if (et == null) return;
mLastSelectionStart = et.startOffset + et.selectionStart;
mLastSelectionEnd = et.startOffset + et.selectionEnd;
// Then look for possible corrections in a delayed fashion
if (!TextUtils.isEmpty(et.text) && isCursorTouchingWord()) {
postUpdateOldSuggestions();
}
}
}
项目:brailleback
文件:BrailleIME.java
@Override
public void onStartInput(EditorInfo attribute, boolean restarting) {
super.onStartInput(attribute, restarting);
LogUtils.log(this, Log.VERBOSE,
"onStartInput: inputType: %x, imeOption: %x, " +
", label: %s, hint: %s, package: %s, ",
attribute.inputType, attribute.imeOptions, attribute.label,
attribute.hintText, attribute.packageName);
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ExtractedTextRequest req = new ExtractedTextRequest();
req.token = ++mExtractedTextToken;
req.hintMaxChars = MAX_REQUEST_CHARS;
mExtractedText = getCurrentInputConnection().getExtractedText(req,
InputConnection.GET_EXTRACTED_TEXT_MONITOR);
} else {
mExtractedText = null;
}
updateCurrentText();
updateDisplay();
Host host = getHost();
if (host != null) {
host.onStartInput(attribute, restarting);
}
}
项目:brailleback
文件:BrailleIMETest.java
/**
* Injects objects into their usual places in the mocks and stubs.
* Simplifies boilerplate stubbing.
*/
private void autoStub(Object... objects) {
for (Object o : objects) {
if (o == mBrailleTranslator) {
when(mHost.getBrailleTranslator())
.thenReturn(mBrailleTranslator);
} else if (o == mDisplayManager) {
when(mHost.getDisplayManager()).thenReturn(mDisplayManager);
} else if (o == mFeedbackManager) {
when(mHost.getFeedbackManager()).thenReturn(mFeedbackManager);
} else if (o == mInputConnection) {
when(mIME.getCurrentInputConnection())
.thenReturn(mInputConnection);
} else if (o instanceof EditorInfo) {
when(mIME.getCurrentInputEditorInfo())
.thenReturn((EditorInfo) o);
} else if (o instanceof ExtractedText) {
when(mInputConnection.getExtractedText(
isA(ExtractedTextRequest.class), anyInt()))
.thenReturn((ExtractedText) o);
} else {
throw new UnsupportedOperationException(
"can't auto-stub " + o.toString());
}
}
}
项目:AlexaAndroid
文件:InputConnectionCommandEditor.java
@Override
public boolean replace(String str1, String str2) {
boolean success = false;
mInputConnection.beginBatchEdit();
ExtractedText extractedText = mInputConnection.getExtractedText(new ExtractedTextRequest(), 0);
if (extractedText != null) {
CharSequence beforeCursor = extractedText.text;
//CharSequence beforeCursor = mInputConnection.getTextBeforeCursor(MAX_SELECTABLE_CONTEXT, 0);
Log.i("replace: " + beforeCursor);
int index = beforeCursor.toString().lastIndexOf(str1);
Log.i("replace: " + index);
if (index > 0) {
mInputConnection.setSelection(index, index);
mInputConnection.deleteSurroundingText(0, str1.length());
if (!str2.isEmpty()) {
mInputConnection.commitText(str2, 0);
}
success = true;
}
mInputConnection.endBatchEdit();
}
return success;
}
项目:remotekeyboard
文件:CtrlInputAction.java
/**
* Try to replace the current word with its substitution.
*/
private void replaceText(InputConnection con) {
ExtractedText txt = con.getExtractedText(new ExtractedTextRequest(), 0);
if (txt != null) {
int end = txt.text.toString().indexOf(" ", txt.selectionEnd);
if (end == -1) {
end = txt.text.length();
}
int start = txt.text.toString().lastIndexOf(" ", txt.selectionEnd - 1);
start++;
String sel = txt.text.subSequence(start, end).toString();
String rep = myService.replacements.get(sel);
if (rep != null) {
con.setComposingRegion(start, end);
con.setComposingText(rep, 1);
con.finishComposingText();
}
else {
String err = myService.getResources().getString(
R.string.err_no_replacement, sel);
Toast.makeText(myService, err, Toast.LENGTH_SHORT).show();
}
}
}
项目:keepass2android
文件:EditingUtil.java
private static int getCursorPosition(InputConnection connection) {
ExtractedText extracted = connection.getExtractedText(
new ExtractedTextRequest(), 0);
if (extracted == null) {
return -1;
}
return extracted.startOffset + extracted.selectionStart;
}
项目:simple-keyboard
文件:RichInputConnection.java
private void checkConsistencyForDebug() {
final ExtractedTextRequest r = new ExtractedTextRequest();
r.hintMaxChars = 0;
r.hintMaxLines = 0;
r.token = 1;
r.flags = 0;
final ExtractedText et = mIC.getExtractedText(r, 0);
final CharSequence beforeCursor = getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE,
0);
final StringBuilder internal = new StringBuilder(mCommittedTextBeforeComposingText)
.append(mComposingText);
if (null == et || null == beforeCursor) return;
final int actualLength = Math.min(beforeCursor.length(), internal.length());
if (internal.length() > actualLength) {
internal.delete(0, internal.length() - actualLength);
}
final String reference = (beforeCursor.length() <= actualLength) ? beforeCursor.toString()
: beforeCursor.subSequence(beforeCursor.length() - actualLength,
beforeCursor.length()).toString();
if (et.selectionStart != mExpectedSelStart
|| !(reference.equals(internal.toString()))) {
final String context = "Expected selection start = " + mExpectedSelStart
+ "\nActual selection start = " + et.selectionStart
+ "\nExpected text = " + internal.length() + " " + internal
+ "\nActual text = " + reference.length() + " " + reference;
((LatinIME)mParent).debugDumpStateAndCrashWithException(context);
} else {
Log.e(TAG, DebugLogUtils.getStackTrace(2));
Log.e(TAG, "Exp <> Actual : " + mExpectedSelStart + " <> " + et.selectionStart);
}
}
项目:Swift-Braille-Soft-keyboard
文件:Common.java
public static String getAllInputText(InputConnection inputConnection) {
String allText = "";
try {
ExtractedText extractedText = inputConnection.getExtractedText(new ExtractedTextRequest(), 0);
if (extractedText != null) {
allText = extractedText.text.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return allText;
}
项目:AI-Powered-Intelligent-Banking-Platform
文件:InputConnectionCommandEditor.java
@Override
public boolean select(String str) {
boolean success = false;
mInputConnection.beginBatchEdit();
ExtractedText extractedText = mInputConnection.getExtractedText(new ExtractedTextRequest(), 0);
CharSequence beforeCursor = extractedText.text;
int index = beforeCursor.toString().lastIndexOf(str);
if (index > 0) {
mInputConnection.setSelection(index, index + str.length());
success = true;
}
mInputConnection.endBatchEdit();
return success;
}
项目:AOSP-Kayboard-7.1.2
文件:RichInputConnection.java
private void checkConsistencyForDebug() {
final ExtractedTextRequest r = new ExtractedTextRequest();
r.hintMaxChars = 0;
r.hintMaxLines = 0;
r.token = 1;
r.flags = 0;
final ExtractedText et = mIC.getExtractedText(r, 0);
final CharSequence beforeCursor = getTextBeforeCursor(Constants.EDITOR_CONTENTS_CACHE_SIZE,
0);
final StringBuilder internal = new StringBuilder(mCommittedTextBeforeComposingText)
.append(mComposingText);
if (null == et || null == beforeCursor) return;
final int actualLength = Math.min(beforeCursor.length(), internal.length());
if (internal.length() > actualLength) {
internal.delete(0, internal.length() - actualLength);
}
final String reference = (beforeCursor.length() <= actualLength) ? beforeCursor.toString()
: beforeCursor.subSequence(beforeCursor.length() - actualLength,
beforeCursor.length()).toString();
if (et.selectionStart != mExpectedSelStart
|| !(reference.equals(internal.toString()))) {
final String context = "Expected selection start = " + mExpectedSelStart
+ "\nActual selection start = " + et.selectionStart
+ "\nExpected text = " + internal.length() + " " + internal
+ "\nActual text = " + reference.length() + " " + reference;
((LatinIME)mParent).debugDumpStateAndCrashWithException(context);
} else {
Log.e(TAG, DebugLogUtils.getStackTrace(2));
Log.e(TAG, "Exp <> Actual : " + mExpectedSelStart + " <> " + et.selectionStart);
}
}
项目:KeePass2Android
文件:EditingUtil.java
private static int getCursorPosition(InputConnection connection) {
ExtractedText extracted = connection.getExtractedText(
new ExtractedTextRequest(), 0);
if (extracted == null) {
return -1;
}
return extracted.startOffset + extracted.selectionStart;
}
项目:brailleback
文件:BrailleIMETest.java
/** Tests that lifecycle events are passed to the host. */
public void testLifecycle() {
EditorInfo editorInfo = getSampleEditorInfo();
doReturn(null).when(mIME).getCurrentInputConnection();
mIME.onCreate();
verify(mHost).onCreateIME();
doReturn(mInputConnection).when(mIME).getCurrentInputConnection();
mIME.onBindInput();
verify(mHost).onBindInput();
doReturn(getSampleExtractedText()).when(mInputConnection)
.getExtractedText(isA(ExtractedTextRequest.class), anyInt());
mIME.onStartInput(editorInfo, false);
verify(mHost).onStartInput(editorInfo, false);
mIME.onStartInputView(editorInfo, false);
verify(mHost).onStartInputView(editorInfo, false);
mIME.onFinishInputView(true);
verify(mHost).onFinishInputView(true);
doReturn(null).when(mInputConnection)
.getExtractedText(isA(ExtractedTextRequest.class), anyInt());
mIME.onFinishInput();
verify(mHost).onFinishInput();
doReturn(null).when(mIME).getCurrentInputConnection();
mIME.onUnbindInput();
verify(mHost).onUnbindInput();
mIME.onDestroy();
verify(mHost).onDestroyIME();
}
项目:brailleback
文件:BrailleIMETest.java
/** Tests that the IME monitors the extracted text. */
public void testMonitorsExtractedText() {
EditorInfo editorInfo = getSampleEditorInfo();
ExtractedText et = getSampleExtractedText();
ArgumentCaptor<ExtractedTextRequest> etr =
ArgumentCaptor.forClass(ExtractedTextRequest.class);
ArgumentCaptor<Integer> etFlags =
ArgumentCaptor.forClass(Integer.class);
autoStub(mDisplayManager, mInputConnection, editorInfo);
when(mInputConnection.getExtractedText(
etr.capture(), etFlags.capture())).thenReturn(et);
createBindAndStart(editorInfo);
// Check the extracted text request.
assertNotNull(etr.getValue());
assertEquals(InputConnection.GET_EXTRACTED_TEXT_MONITOR,
etFlags.getValue().intValue());
int etToken = etr.getValue().token;
// Check the provided display content.
verifyDisplayContentMatches("Hello world! [Execute]");
// Change the content and verify that the display manager is updated.
et.text = "Hello Canada!";
mIME.onUpdateExtractedText(etToken, et);
verifyDisplayContentMatches("Hello Canada! [Execute]");
finishUnbindAndDestroy();
}
项目:AlexaAndroid
文件:InputConnectionCommandEditor.java
@Override
public boolean select(String str) {
boolean success = false;
mInputConnection.beginBatchEdit();
ExtractedText extractedText = mInputConnection.getExtractedText(new ExtractedTextRequest(), 0);
CharSequence beforeCursor = extractedText.text;
int index = beforeCursor.toString().lastIndexOf(str);
if (index > 0) {
mInputConnection.setSelection(index, index + str.length());
success = true;
}
mInputConnection.endBatchEdit();
return success;
}
项目:920-text-editor-v2
文件:InputConnectionHacker.java
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
// return ic.getExtractedText(request, flags);
String text = editAreaView.getSelectedText();
if (text == null) text = "";
ExtractedText et = new ExtractedText();
et.text = text;
et.partialEndOffset = text.length();
et.selectionStart = 0;
et.selectionEnd = text.length();
et.flags = 0;
return et;
}
项目:hackerskeyboard
文件:LatinIME.java
private void checkReCorrectionOnStart() {
if (mReCorrectionEnabled && isPredictionOn()) {
// First get the cursor position. This is required by
// setOldSuggestions(), so that
// it can pass the correct range to setComposingRegion(). At this
// point, we don't
// have valid values for mLastSelectionStart/Stop because
// onUpdateSelection() has
// not been called yet.
InputConnection ic = getCurrentInputConnection();
if (ic == null)
return;
ExtractedTextRequest etr = new ExtractedTextRequest();
etr.token = 0; // anything is fine here
ExtractedText et = ic.getExtractedText(etr, 0);
if (et == null)
return;
mLastSelectionStart = et.startOffset + et.selectionStart;
mLastSelectionEnd = et.startOffset + et.selectionEnd;
// Then look for possible corrections in a delayed fashion
if (!TextUtils.isEmpty(et.text) && isCursorTouchingWord()) {
postUpdateOldSuggestions();
}
}
}
项目:hackerskeyboard
文件:EditingUtil.java
private static int getCursorPosition(InputConnection connection) {
ExtractedText extracted = connection.getExtractedText(
new ExtractedTextRequest(), 0);
if (extracted == null) {
return -1;
}
return extracted.startOffset + extracted.selectionStart;
}
项目:wifikeyboard
文件:WiFiInputMethod.java
String getText() {
String text = "";
try {
InputConnection conn = getCurrentInputConnection();
ExtractedTextRequest req = new ExtractedTextRequest();
req.hintMaxChars = 1000000;
req.hintMaxLines = 10000;
req.flags = 0;
req.token = 1;
text = conn.getExtractedText(req, 0).text.toString();
} catch (Throwable t) {
}
return text;
}
项目:Tada
文件:TextView.java
/**
* @hide
*/
public void setExtracting(ExtractedTextRequest req) {
if (mEditor.mInputMethodState != null) {
mEditor.mInputMethodState.mExtractedTextRequest = req;
}
// This would stop a possible selection mode, but no such mode is started in case
// extracted mode will start. Some text is selected though, and will trigger an action mode
// in the extracted view.
mEditor.hideControllers();
}
项目:dotdash-keyboard-android
文件:DotDashIMEService.java
/**
* Handle key input on the utility keyboard. Keys with a positive keycode
* are meant to be passed through String.valueOf(), while keys with negative
* keycodes must be specially processed
*
* @param primaryCode
* @param keyCodes
*/
public void onKeyUtility(int primaryCode, int[] keyCodes) {
if (primaryCode > 0) {
getCurrentInputConnection().commitText(
String.valueOf((char) primaryCode), 1);
} else {
switch (primaryCode) {
case KEYCODE_UP:
sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_UP);
break;
case KEYCODE_LEFT:
sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_LEFT);
break;
case KEYCODE_RIGHT:
sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_RIGHT);
break;
case KEYCODE_DOWN:
sendDownUpKeyEvents(KeyEvent.KEYCODE_DPAD_DOWN);
break;
case KEYCODE_DEL:
sendDownUpKeyEvents(KeyEvent.KEYCODE_DEL);
break;
case KEYCODE_HOME:
getCurrentInputConnection().setSelection(0, 0);
break;
case KEYCODE_END:
ExtractedText et = getCurrentInputConnection()
.getExtractedText(new ExtractedTextRequest(), 0);
if (et != null) {
int length = et.text.length();
getCurrentInputConnection().setSelection(length, length);
}
break;
}
}
}
项目:365browser
文件:ThreadedInputConnection.java
/**
* @see InputConnection#getExtractedText(android.view.inputmethod.ExtractedTextRequest, int)
*/
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (DEBUG_LOGS) Log.i(TAG, "getExtractedText");
assertOnImeThread();
mShouldUpdateExtractedText = (flags & GET_EXTRACTED_TEXT_MONITOR) > 0;
if (mShouldUpdateExtractedText) {
mCurrentExtractedTextRequestToken = request != null ? request.token : 0;
}
TextInputState textInputState = requestAndWaitForTextInputState();
return convertToExtractedText(textInputState);
}
项目:mc_backup
文件:GeckoInputConnection.java
@Override
public ExtractedText getExtractedText(ExtractedTextRequest req, int flags) {
if (req == null)
return null;
if ((flags & GET_EXTRACTED_TEXT_MONITOR) != 0)
mUpdateRequest = req;
Editable editable = getEditable();
if (editable == null) {
return null;
}
int selStart = Selection.getSelectionStart(editable);
int selEnd = Selection.getSelectionEnd(editable);
ExtractedText extract = new ExtractedText();
extract.flags = 0;
extract.partialStartOffset = -1;
extract.partialEndOffset = -1;
extract.selectionStart = selStart;
extract.selectionEnd = selEnd;
extract.startOffset = 0;
if ((req.flags & GET_TEXT_WITH_STYLES) != 0) {
extract.text = new SpannableString(editable);
} else {
extract.text = editable.toString();
}
return extract;
}
项目:JotaTextEditor
文件:TextView.java
boolean reportExtractedText() {
final InputMethodState ims = mInputMethodState;
if (ims != null) {
final boolean contentChanged = ims.mContentChanged;
if (contentChanged || ims.mSelectionModeChanged) {
ims.mContentChanged = false;
ims.mSelectionModeChanged = false;
final ExtractedTextRequest req = mInputMethodState.mExtracting;
if (req != null) {
InputMethodManager imm = InputMethodManager.peekInstance();
if (imm != null) {
if (DEBUG_EXTRACT) Log.v(TAG, "Retrieving extracted start="
+ ims.mChangedStart + " end=" + ims.mChangedEnd
+ " delta=" + ims.mChangedDelta);
if (ims.mChangedStart < 0 && !contentChanged) {
ims.mChangedStart = EXTRACT_NOTHING;
}
if (extractTextInternal(req, ims.mChangedStart, ims.mChangedEnd,
ims.mChangedDelta, ims.mTmpExtracted)) {
if (DEBUG_EXTRACT) Log.v(TAG, "Reporting extracted start="
+ ims.mTmpExtracted.partialStartOffset
+ " end=" + ims.mTmpExtracted.partialEndOffset
+ ": " + ims.mTmpExtracted.text);
imm.updateExtractedText(this, req.token,
mInputMethodState.mTmpExtracted);
return true;
}
}
}
}
}
return false;
}
项目:JotaTextEditor
文件:TextView.java
/**
* @hide
*/
public void setExtracting(ExtractedTextRequest req) {
if (mInputMethodState != null) {
mInputMethodState.mExtracting = req;
}
hideControllers();
}
项目:JotaTextEditor
文件:EditableInputConnection.java
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (mTextView != null) {
ExtractedText et = new ExtractedText();
if (mTextView.extractText(request, et)) {
if ((flags&GET_EXTRACTED_TEXT_MONITOR) != 0) {
mTextView.setExtracting(request);
}
return et;
}
}
return null;
}
项目:CodenameOne
文件:CodenameOneInputConnection.java
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (Display.isInitialized() && Display.getInstance().getCurrent() != null) {
this.request = request;
ExtractedText et = new ExtractedText();
if (extractText(request, et)) {
return et;
}
}
return null;
}
项目:CodenameOne
文件:CodenameOneInputConnection.java
boolean extractTextInternal(ExtractedTextRequest request, ExtractedText outText) {
Component txtCmp = Display.getInstance().getCurrent().getFocused();
if (txtCmp != null && txtCmp instanceof TextField) {
String txt = ((TextField) txtCmp).getText();
int partialStartOffset = -1;
int partialEndOffset = -1;
final CharSequence content = txt;
if (content != null) {
final int N = content.length();
outText.partialStartOffset = outText.partialEndOffset = -1;
partialStartOffset = 0;
partialEndOffset = N;
if ((request.flags & InputConnection.GET_TEXT_WITH_STYLES) != 0) {
outText.text = content.subSequence(partialStartOffset,
partialEndOffset);
} else {
outText.text = TextUtils.substring(content, partialStartOffset,
partialEndOffset);
}
outText.flags = 0;
outText.flags |= ExtractedText.FLAG_SINGLE_LINE;
outText.startOffset = 0;
outText.selectionStart = Selection.getSelectionStart(content);
outText.selectionEnd = Selection.getSelectionEnd(content);
return true;
}
}
return false;
}
项目:cn1
文件:CodenameOneInputConnection.java
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (Display.isInitialized() && Display.getInstance().getCurrent() != null) {
this.request = request;
ExtractedText et = new ExtractedText();
if (extractText(request, et)) {
return et;
}
}
return null;
}
项目:cn1
文件:CodenameOneInputConnection.java
boolean extractTextInternal(ExtractedTextRequest request, ExtractedText outText) {
Component txtCmp = Display.getInstance().getCurrent().getFocused();
if (txtCmp != null && txtCmp instanceof TextField) {
String txt = ((TextField) txtCmp).getText();
int partialStartOffset = -1;
int partialEndOffset = -1;
final CharSequence content = txt;
if (content != null) {
final int N = content.length();
outText.partialStartOffset = outText.partialEndOffset = -1;
partialStartOffset = 0;
partialEndOffset = N;
if ((request.flags & InputConnection.GET_TEXT_WITH_STYLES) != 0) {
outText.text = content.subSequence(partialStartOffset,
partialEndOffset);
} else {
outText.text = TextUtils.substring(content, partialStartOffset,
partialEndOffset);
}
outText.flags = 0;
outText.flags |= ExtractedText.FLAG_SINGLE_LINE;
outText.startOffset = 0;
outText.selectionStart = Selection.getSelectionStart(content);
outText.selectionEnd = Selection.getSelectionEnd(content);
return true;
}
}
return false;
}
项目:android-chromium-view
文件:AdapterInputConnection.java
/**
* @see BaseInputConnection#getExtractedText(android.view.inputmethod.ExtractedTextRequest,
* int)
*/
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (DEBUG) Log.w(TAG, "getExtractedText");
ExtractedText et = new ExtractedText();
Editable editable = getEditable();
et.text = editable.toString();
et.partialEndOffset = editable.length();
et.selectionStart = Selection.getSelectionStart(editable);
et.selectionEnd = Selection.getSelectionEnd(editable);
et.flags = mSingleLine ? ExtractedText.FLAG_SINGLE_LINE : 0;
return et;
}
项目:android-chromium
文件:AdapterInputConnection.java
/**
* @see BaseInputConnection#getExtractedText(android.view.inputmethod.ExtractedTextRequest,
* int)
*/
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (DEBUG) Log.w(TAG, "getExtractedText");
ExtractedText et = new ExtractedText();
Editable editable = getEditable();
et.text = editable.toString();
et.partialEndOffset = editable.length();
et.selectionStart = Selection.getSelectionStart(editable);
et.selectionEnd = Selection.getSelectionEnd(editable);
et.flags = mSingleLine ? ExtractedText.FLAG_SINGLE_LINE : 0;
return et;
}
项目:TokenAutoComplete
文件:TokenCompleteTextView.java
@Override
public boolean extractText(@NonNull ExtractedTextRequest request, @NonNull ExtractedText outText) {
try {
return super.extractText(request, outText);
} catch (IndexOutOfBoundsException ignored) {
Log.d(TAG, "extractText hit IndexOutOfBoundsException. This may be normal.", ignored);
return false;
}
}
项目:chromium_webview
文件:AdapterInputConnection.java
/**
* @see BaseInputConnection#getExtractedText(android.view.inputmethod.ExtractedTextRequest,
* int)
*/
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (DEBUG) Log.w(TAG, "getExtractedText");
ExtractedText et = new ExtractedText();
Editable editable = getEditable();
et.text = editable.toString();
et.partialEndOffset = editable.length();
et.selectionStart = Selection.getSelectionStart(editable);
et.selectionEnd = Selection.getSelectionEnd(editable);
et.flags = mSingleLine ? ExtractedText.FLAG_SINGLE_LINE : 0;
return et;
}
项目:android-kioskime
文件:RichInputConnection.java
private void checkConsistencyForDebug() {
final ExtractedTextRequest r = new ExtractedTextRequest();
r.hintMaxChars = 0;
r.hintMaxLines = 0;
r.token = 1;
r.flags = 0;
final ExtractedText et = mIC.getExtractedText(r, 0);
final CharSequence beforeCursor = getTextBeforeCursor(DEFAULT_TEXT_CACHE_SIZE, 0);
final StringBuilder internal = new StringBuilder().append(mCommittedTextBeforeComposingText)
.append(mComposingText);
if (null == et || null == beforeCursor) return;
final int actualLength = Math.min(beforeCursor.length(), internal.length());
if (internal.length() > actualLength) {
internal.delete(0, internal.length() - actualLength);
}
final String reference = (beforeCursor.length() <= actualLength) ? beforeCursor.toString()
: beforeCursor.subSequence(beforeCursor.length() - actualLength,
beforeCursor.length()).toString();
if (et.selectionStart != mCurrentCursorPosition
|| !(reference.equals(internal.toString()))) {
final String context = "Expected cursor position = " + mCurrentCursorPosition
+ "\nActual cursor position = " + et.selectionStart
+ "\nExpected text = " + internal.length() + " " + internal
+ "\nActual text = " + reference.length() + " " + reference;
((LatinIME)mParent).debugDumpStateAndCrashWithException(context);
} else {
Log.e(TAG, Utils.getStackTrace(2));
Log.e(TAG, "Exp <> Actual : " + mCurrentCursorPosition + " <> " + et.selectionStart);
}
}
项目:cordova-android-chromium
文件:AdapterInputConnection.java
/**
* @see BaseInputConnection#getExtractedText(android.view.inputmethod.ExtractedTextRequest,
* int)
*/
@Override
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
if (DEBUG) Log.w(TAG, "getExtractedText");
ExtractedText et = new ExtractedText();
Editable editable = getEditable();
et.text = editable.toString();
et.partialEndOffset = editable.length();
et.selectionStart = Selection.getSelectionStart(editable);
et.selectionEnd = Selection.getSelectionEnd(editable);
et.flags = mSingleLine ? ExtractedText.FLAG_SINGLE_LINE : 0;
return et;
}
项目:remotekeyboard
文件:CtrlInputAction.java
/**
* Place the cursor on the next occurance of a symbol
*
* @param con
* driver
* @param symbol
* the symbol to jump to
*/
private void jumpForward(InputConnection con, int symbol) {
ExtractedText txt = con.getExtractedText(new ExtractedTextRequest(), 0);
if (txt != null) {
int pos = txt.text.toString().indexOf(symbol, txt.selectionEnd + 1);
if (pos == -1) {
pos = txt.text.length();
}
con.setSelection(pos, pos);
}
}
项目:remotekeyboard
文件:CtrlInputAction.java
/**
* Place the cursor on the last occusrance of a symbol
*
* @param con
* driver
* @param symbol
* the symbol to jump to
*/
private void jumpBackward(InputConnection con, int symbol) {
ExtractedText txt = con.getExtractedText(new ExtractedTextRequest(), 0);
if (txt != null) {
int pos = txt.text.toString().lastIndexOf(symbol, txt.selectionEnd - 2);
pos++;
con.setSelection(pos, pos);
}
}
项目:remotekeyboard
文件:CtrlInputAction.java
/**
* use ROT13 to scramble the contents of the editor
*/
private void scramble(InputConnection con) {
char[] buffer = null;
CharSequence selected = con.getSelectedText(0);
if (selected != null) {
buffer = selected.toString().toCharArray();
}
else {
ExtractedText txt = con.getExtractedText(new ExtractedTextRequest(), 0);
if (txt == null) {
return;
}
buffer = txt.text.toString().toCharArray();
if (buffer.length == 0)
return;
}
// char[] buffer = con.getSelectedText(0).toString().toCharArray();
// //con.getExtractedText(new
// ExtractedTextRequest(),0).text.toString().toCharArray();
for (int i = 0; i < buffer.length; i++) {
if (buffer[i] >= 'a' && buffer[i] <= 'm')
buffer[i] += 13;
else if (buffer[i] >= 'A' && buffer[i] <= 'M')
buffer[i] += 13;
else if (buffer[i] >= 'n' && buffer[i] <= 'z')
buffer[i] -= 13;
else if (buffer[i] >= 'N' && buffer[i] <= 'Z')
buffer[i] -= 13;
}
if (selected == null) {
con.setComposingRegion(0, buffer.length);
}
con.setComposingText(new String(buffer), 1);
con.finishComposingText();
}