Android 中文api (81)——InputMethod [输入法]
正文 一、结构 public interfaceInputMethodextendsObject android.view.inputmethod.InputMethod 间接子类 AbstractInputMethodService.AbstractInputMethodImpl,InputMethodService.InputMethodImpl 二、类概述 InputMethod接口代表了输入法,它可生成按键事件,生成文本,如数字,email地址,CJK字符,其它语言字符等等。在处理输入事件时,将文本返回至需要文本输入的应用程序。InputMethodManager可得到更多关于架构的信息。 应用程序通常不使用这个接口本身,而是依靠TextView和EditText提供的标准交互。 输入法实现通常为InputMethodService及其子类的派生。在实现输入法时,包含它的服务控件必须提供SERVICE_META_DATA元数据字段,该元数据字段联接至一包含输入法细节的XML资源。所有输入法也必定要求客户端包含BIND_INPUT_METHOD以便与服务控件交互。如果不这样,系统将无法使用输入法,因其无法确认是否完整。 InputMethod 接口实际上分为两部分:接口是输入法的最高级接口,提供所有的访问,只有系统能访问(需要 BIND_INPUT_METHOD 权限)。另外调用方法 createSession(android.view.inputmethod.InputMethod.SessionCallback) 可实例化 InputMethodSession 副接口,用于与客户端通讯。 三、内部类 interface InputMethod.SessionCallback 四、常量 public static final StringSERVICE_INTERFACE 接口名字,实现输入法的服务应说明它支持输入法,也就是它将用于意向过滤器(intent filter)。服务还需要BIND_INPUT_METHOD权限,这样应用程序不会滥用它。 常量值: "android.view.InputMethod" public static final StringSERVICE_META_DATA 输入法通过此名字发布其自身信息。此元数据必须引用一个包含<input-method>标签的XML资源。 常量值: "android.view.im" public static final intSHOW_EXPLICIT 用于showSoftInput(int, ResultReceiver)的标志:它表示用户显式地要求其(软键盘)显示。如果没有设置,系统决定可能是一个好主意,显示输入法在用户界面上的导航操作。 常量值: 1 (0x00000001) public static final intSHOW_FORCED 标志用于showSoftInput(int, ResultReceiver):表明用户强制其(软键盘)显示。如设置,输入法保持可见直至用户在UI上取消。 常量值: 2 (0x00000002) 五、公共方法 public abstract voidattachToken(IBinder token) 输入法创建后首先被调用,它提供一个与系统服务会话的唯一令牌。它需要通过服务识别输入法从而验证其操作。令牌不能传递给应用程序,因其取得了应用程序不应得到的特殊权限。 注意:为避免恶意客户端伤害,你应只接收第一个令牌。其后可能来自客户端。 public abstract voidbindInput(InputBinding binding) 将输入法与新的应用程序环境绑定,以便稍后启动、停止输入处理。通常在应用程序第一次启用输入法时调用此方法。 参数 binding与输入法绑定的应用程序窗口信息。 参见 InputBinding unbindInput() public abstract voidcreateSession(InputMethod.SessionCallback callback) 创建一个新的InputMethodSession,它可处理客户应用程序与输入法的交互。你可以随后用revokeSession(InputMethodSession)销毁会话,这样就不会有任何客户端使用它。 参数 callback新创建会话调用的接口。 public abstract voidhideSoftInput(int flags, ResultReceiver resultReceiver) 将输入法的软键盘(soft input)部分对用户隐藏。 参数 flags显示要求的附加信息。当前总是0。 resultReceiver 向要求显示的客户端通知结果。其结果可能为InputMethodManager.RESULT_UNCHANGED_SHOWN, InputMethodManager.RESULT_UNCHANGED_HIDDEN,InputMethodManager.RESULT_SHOWN,或InputMethodManager.RESULT_HIDDEN public abstract voidrestartInput(InputConnection inputConnection, EditorInfo attribute) 输入法需重置时调用此方法。 通常输入焦点从一个文本框移至另一个时调用此方法。 参数 inputConnection可选,确定与文本框通讯的输入通讯通道;如为空,你使用通常绑定的输入通讯通道。 attribute文本框(通常是EditText)需要输入的属性 参见 EditorInfo public abstract voidrevokeSession(InputMethodSession session) 关闭并销毁先前由createSession(android.view.inputmethod.InputMethod.SessionCallback)创建的会话。调用后,会话不再有效,对其的调用将失败。 参数 session 先前由SessionCallback.sessionCreated()提供的InputMethodSession将被吊销。 public abstract voidsetSessionEnabled(InputMethodSession session, boolean enabled). 控制某特定输入法会话是否激活。 参数 session 先前由SessionCallback.sessionCreated()提供的InputMethodSession将改变。 public abstract voidshowSoftInput(int flags, ResultReceiver resultReceiver) 将输入法的软键盘(soft input)部分对用户显示。 参数 flags 提供显示要求的附加信息。当前为0或设置SHOW_EXPLICIT位。 resultReceiver 向要求显示的客户端通知结果。其结果可能为InputMethodManager.RESULT_UNCHANGED_SHOWN, InputMethodManager.RESULT_UNCHANGED_HIDDEN,InputMethodManager.RESULT_SHOWN,或InputMethodManager.RESULT_HIDDEN public abstract voidstartInput(InputConnection inputConnection, EditorInfo info) 应用程序开始接收文本,输入法准备好为应用程序处理接收事件并返回文本时调用本方法。 参数 inputConnection可选,确定与文本框通讯的输入通讯通道;如为空,你使用通常绑定的输入通讯通道。 info 需要输入的文本框(通常是EditText)信息。 参见 EditorInfo public abstract voidunbindInput() 解除与应用程序的绑定,先前由bindInput(InputBinding)设定的信息对当前输入法无效时调用。 通常在应用程序变为非前台调用。 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582435,如需转载请自行联系原作者