前言

  本章内容是android.view.inputmethod.InputConnection,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢迎大家访问他的博客:http://www.cnblogs.com/zcmky/,再次感谢"六必治" !期待你加入Android API 中文的翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://code.taobao.org/project/view/404/

正文

  一、结构

public interface InputConnection

android.view.inputmethod.InputConnection

间接子类

BaseInputConnection, InputConnectionWrapper

  二、概述

     InputConnection接口是接收输入的应用程序与InputMethod间的通讯通道。它可以完成以下功能,如读取光标周围的文本,向文本框提交文本,向应用程序提交原始按键事件。

 BaseInputConnection的子类应实现这一接口。

  三、常量

  public static final int GET_EXTRACTED_TEXT_MONITOR

  标志,用在getExtractedText(ExtractedTextRequest, int)中,表示提取的文本变化时你想接收到更新。

  常量值: 1 (0x00000001)

  public static final int GET_TEXT_WITH_STYLES

  标志,用在getTextAfterCursor(int, int)getTextBeforeCursor(int, int)中,表明返回的文本中包含样式。不设置时,你将仅接收原始文本。设置时,你将收到复合的CharSequence,包括文本和样式段。

  常量值: 1 (0x00000001)

  四、公共方法

  public abstract boolean beginBatchEdit ()

  通知编辑器你将开始批量编辑操作。编辑器尽量避免向你发送状态更新,直到调用endBatchEdit()为止。

  public abstract boolean clearMetaKeyStates (int states)

  在指定的输入连接中清除指定的元键(meta key)按下状态。

  参数

  states     清除的状态,可以是KeyEvent.getMetaState()中的一位或多位结果。

  返回值

  成功返回true,当连接无效时返回flase。

  public abstract boolean commitCompletion (CompletionInfo text)

  提交用户的选择,选择先前向 InputMethodSession.displayCompletions()提交的选项中的一个。其结果就像用户从实际UI中做出一样。

  参数

  text          提交的结果。

  返回值

  成功返回true,当连接无效时返回flase。

  public abstract boolean commitText (CharSequence text, int newCursorPosition)

  向文本框提交文本并设置新的光标位置。之前设置的正编辑文字将自动删除。

  参数

  text          提交的文本。

  newCursorPosition          文本范围内新的光标位置。如果大于0,从提交文本末尾-1处计起;<= 0,提交文本开始处计起。所以值为1时,光标将定位于你刚刚插入文本之后。注意你不能光标定位于提交文本中,因为编辑器可以修改你提供的文本,所以不必将光标定位在哪。

  返回值

  成功返回true,当连接无效时返回flase。

  public abstract boolean deleteSurroundingText (int leftLength, int rightLength)

  删除当前光标前的leftLength个字符,并删除当前光标后的rightLength个字符,不包联想输入(composing)的文字。

  参数

  leftLength       删除的当前光标之前字符个数。

  rightLength     删除的当前光标之后字符个数。

  返回值

  成功返回true,当连接无效时返回flase。

  public abstract boolean endBatchEdit ()

  调用endBatchEdit()方法通知编辑器之前开始的批量编辑已完成。

  public abstract boolean finishComposingText ()

  强制结束文本编辑器,无论联想输入(composing text)是否激活。文本保持不变,移除任何与此文本的编辑样式或其他状态。光标保持不变。

  public abstract int getCursorCapsMode (int reqModes)

  取得当前光标位置的文本的大小写状态。参见TextUtils.getCapsMode 取得更多信息。此方法在输入连接(connection)无效(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回0。

  参数

      reqModes       依据TextUtils.getCapsMode定义取得期望的状态。通过已定义的常数,你可以轻易地传递TextBoxAttribute.contentType当前。

  返回值

  返回当前有效的大小写状态。

  public abstract ExtractedText getExtractedText (ExtractedTextRequest request, int flags)

  获取当前输入连接的编辑器中的当前文本,并监视是否有变化。函数返回当前文本,当文本变化时输入连接可选择性向输入法发送更新。

  此方法在输入联接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。

  参数

  request  描述文本如何返回

  flags        控制客户端的附加选项,0或GET_EXTRACTED_TEXT_MONITOR

  返回值

  返回一个ExtractedText对象描述文本视窗的状态,及所包含的提取文本。

  public abstract CharSequence getSelectedText (int flags)

  如果有的话取得所选的文本。

  此方法在输入连接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。

  参数

  flags        提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES

  返回值

  如果有的话返回当前选取文本,如果没有文本被选中返回null。

  public abstract CharSequence getTextAfterCursor (int n, int flags)

  取得当前光标位置后的 n 个字符文本。

  此方法在输入连接无效时(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。

  参数

  n      期望的文本长度

  flags        提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES

  返回值

  返回当前光标后的文本,返回的文本长度可能小于 n

  public abstract CharSequence getTextBeforeCursor (int n, int flags)

  取得当前光标位置前的 n 个字符文本。

  本此方法在输入连接无效(如线程冲突)或客户端等待时间过长(等待几秒返回)时可能会失败。上述情况时返回null值。

  参数

  n      期望的文本长度

  flags        提供附加选项控制,控制文本如何返回。可为0 或 GET_TEXT_WITH_STYLES

  返回值

  返回当前光标前的文本,返回的文本长度可能小于 n

  public abstract boolean performContextMenuAction (int id)

  在区域中执行调用上下文菜单动作,其id可能下列之一:selectAll, startSelectingText, stopSelectingText, cut, copy, paste, copyUrl, 或 switchInputMethod

  public abstract boolean performEditorAction (int editorAction)

  让编辑器执行一个它可以完成的操作。

  参数

  editorAction  必须是动作常量EditorInfo.editorType中的一个,如EditorInfo.EDITOR_ACTION_GO。

  返回值

  成功返回true,如输入连接无效返回false。

  public abstract boolean performPrivateCommand (String action, Bundle data)

  API从输入法向所连接的编辑器发送私有命令。这可用于提供仅用于特定输入法及其客户端功能的特定域(domain-specific)。注意,因为InputConnection协议是异步的,你无法取回结果或知道客户端是否懂得命令;你可能使用 EditorInfo来确定客户端是否支持某一命令。

  参数

  action      要执行的命令名称。必须是作用域名,前缀你自己的包名,这样不同的开发者就不会建立让人冲突的命令。

  data         命令中的数据

  返回值

  当命令发送后返回true(无论相关的编辑是否理解它),如输入连接无效返回false。

  public abstract boolean reportFullscreenMode (boolean enabled)

  由IME调用,通知客户端将在全屏与普通模式间切换。它在 InputMethodService的标准实现中被调用。

  public abstract boolean sendKeyEvent (KeyEvent event)

  向当前输入连接所附着的进程发送按键事件。事件像普通按键事件一样由当前焦点,通常是提供InputConnection的视图。但由于协议的异步性这一点并不总是这样,焦点可能在事件收到时发生改变。

本方法可用于向应用程序发送按键事件。如屏幕键盘可以用这一方法模拟硬件键盘。标准键盘有三种:数字(12键),预测键盘(20键)和字母(QWERTY)。你可以通过事件的设备码(device id)确定键盘类型。

在你向本API发送的所有按键事件中,你可能希望设置KeyEvent.FLAG_SOFT_KEYBOARD标志,但这一标志不可设置。

  参数

  event       按键事件

  返回值

  成功返回true,当输入连接无效返回false。

参见

KeyEvent

NUMERIC

PREDICTIVE

ALPHA

  public abstract boolean setComposingRegion (int start, int end)

  将特定区域设为正在编辑文本。以前设置的正在编辑文本自动移除。文本使用默认正在编辑文本样式。(审核注:”composing text”的翻译还需要后期用例子来推测其含义。)

  参数

  start        正在编辑文本开始的位置

  end          正在编辑文本结束的位置。

  返回值

  成功返回true,当输入联接无效时返回false。

  public abstract boolean setComposingText (CharSequence text, int newCursorPosition)

  将当前的光标旁正在联想文本(composing text)替代为给定文本,并设置新光标位置。以前设置的正在编辑文本自动移除。(译者注:

InputConnection ic = getCurrentInputConnection();

ic.setComposingText("Composi", 1);

    

  )

  参数

  text          如必要正在编辑文本有样式。如文本没有附带样式对象,正在编辑文本将应用默认样式。见如何在文本上附加样式{#link android.text.Spanned}。{#link android.text.SpannableString}和{#link   android.text.SpannableStringBuilder}是两种界面实现方式。

  newCursorPosition          文本范围内新的光标位置。如果大于0,从提交文本末尾-1处计起;<= 0,提交文本开始处计起。所以值为1时,光标将定位于你刚刚插入文本之后。注意你不能光标定位于提交文本中,因为编辑器可以修改你提供的文本,所以不必将光标定位在哪。

  返回值

  成功返回true,当输入联接无效时返回false。

  public abstract boolean setSelection (int start, int end)

  设置文本编辑器的选定文本。设置到当前光标时,开始与结束取相同值。

  返回值

  成功返回true,当输入联接无效时返回false。

  五、补充

  文章链接

      android sdk中 softkeyboard的自己解析(4)

开源项目

wifikeyboard

android api (82) —— InputConnection [输入法]相关推荐

  1. android api (83) —— InputMethodSession [输入法]

    前言 本章内容是android.view.inputmethod.InputMethodSession,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢 ...

  2. Android 中文api (81)——InputMethod [输入法]

    前言 本章内容是android.view.inputmethod.InputMethod,为输入法相关章节,版本为Android 2.3 r1,翻译来自"六必治",欢迎大家访问他的 ...

  3. Android 平台开发一个输入法

    Android 1.5 新特色之一就是输入法框架(Input Method Framework,IMF),正是它的出现,才为诞生不带实体键盘的设备提供了可能.IMF设计用来支持不同的IME,包括了so ...

  4. Android监听系统输入法键盘弹出显示与隐藏事件

    Android监听系统输入法键盘弹出显示与隐藏事件 有时候需要监听Android系统输入法的弹出显示事件,比如:微信聊天时,不管你当前在聊天中的什么位置(上滑查看消息历史),每当你点击输入框时,都会自 ...

  5. android常用api大全,Android API详解大全.pdf

    Android API详解大全 Android -- TextView 一.TextView的API 1.1 结构 java.lang.Object ↳ android.view.View ↳ and ...

  6. android api 设置,Android API中文文档EditText

    Android API中文文档EditText是本文要介绍的内容,主要是来了解并学习Android API文档的帮助,具体关于Android API的内容的详解来看本文. 一.Android API中 ...

  7. android 输入法 悬浮窗口,Android EditText悬浮在输入法之上

    Android EditText悬浮在输入法之上 使用 android:windowSoftInputMode="adjustResize" 会让界面整体被顶上去,很多时候我们不需 ...

  8. Android API 指南 - Android API Guides

    http://developer.android.com/intl/zh-CN/guide/components/index.html ) 请找到自己要翻译的部分,按下面的'链接规范'添加到下面列表中 ...

  9. Android系统内置第三方输入法

    Android系统内置第三方输入法 一.添加APK进系统目录 1.1  package/目录下创建子目录,例如:package/inputmethod/SogouInput 1.2 将下载好的输入法A ...

  10. Android API 中文 (51) —— ZoomButtonsController

    一.结构 public class ZoomButtonsController extends View implements View.OnTouchListener java.lang.Objec ...

最新文章

  1. MySQL抓包工具:MySQL Sniffer
  2. SVN 文件的解锁方法
  3. python3 string
  4. 如何在窗体之间通讯的几种方法 ? VB.NET方案
  5. Android 4.4.2 动态添加JNI库方法记录 (一 JNI库层)
  6. java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证
  7. keepalived高可用+nginx负载均衡
  8. php如何强制下载文件,php 强制下载文件实例代码
  9. CentOS7 服务器连接超时自动断开问题解决
  10. 一个好玩的小游戏(纯C语言编写)
  11. Java入门之窗口,精细全方位讲解,快乐学java铁铁们!
  12. Word常见基本操作-《和秋叶一起学Word》
  13. 【Android测试】AndroidStudio通过UIAutomator进行测试
  14. 软件测试相关试题知识点
  15. Python实现程序运行时间度量分析
  16. IOS入门之StoryBoard
  17. 创业教父YC创始人Paul Graham就很烦鼓动年轻创业的
  18. 解决报错npm ERR request to https://registry.cnpmjs.org/wangeditor failed, reason: Hostname/
  19. 自定义圆形进度条 自定义倒计时进度条
  20. 关于#include iomanip中iomanip的作用~

热门文章

  1. 浙大计算机学院陈越老师,浙江大学计算机科学与技术学院导师介绍 陈越
  2. 在X79 LGA2011上改造安装利民AX120R LGA1200风扇
  3. wchar_t转为char*
  4. 对外合作,你的作风就是公司的作风
  5. 帮助干活,朋友馈赠了购物卡
  6. 使用dumpbin查看dll有哪些函数
  7. 泰山游记:厕所竟然没水,可想而知
  8. 遇到问题就请外援,汝作为高手的价值在哪里
  9. VirtualBox中,LINUX与Windows可以通过链接来跳转
  10. 中医为什么会发明比血管更玄乎的经脉呢