Android 中文api (81)——InputMethod [输入法]-阿里云开发者社区

开发者社区> 科技小先锋> 正文

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

简介:
+关注继续查看

 

正文

  一、结构

public interface InputMethod extends Object

        

android.view.inputmethod.InputMethod

 

间接子类

AbstractInputMethodService.AbstractInputMethodImplInputMethodService.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 String SERVICE_INTERFACE

  接口名字,实现输入法的服务应说明它支持输入法,也就是它将用于意向过滤器(intent filter)。服务还需要BIND_INPUT_METHOD权限,这样应用程序不会滥用它。

  常量值: "android.view.InputMethod"

 

  public static final String SERVICE_META_DATA

  输入法通过此名字发布其自身信息。此元数据必须引用一个包含input-method>标签的XML资源。

  常量值: "android.view.im"

 

  public static final int SHOW_EXPLICIT

  用于showSoftInput(int, ResultReceiver)的标志:它表示用户显式地要求其(软键盘)显示。如果没有设置,系统决定可能是一个好主意,显示输入法在用户界面上的导航操作。

  常量值: 1 (0x00000001)

 

  public static final int SHOW_FORCED

  标志用于showSoftInput(int, ResultReceiver):表明用户强制其(软键盘)显示。如设置,输入法保持可见直至用户在UI上取消。

  常量值: 2 (0x00000002)

 

  五、公共方法

  public abstract void attachToken (IBinder token)

  输入法创建后首先被调用,它提供一个与系统服务会话的唯一令牌。它需要通过服务识别输入法从而验证其操作。令牌不能传递给应用程序,因其取得了应用程序不应得到的特殊权限。

  注意:为避免恶意客户端伤害,你应只接收第一个令牌。其后可能来自客户端。

 

  public abstract void bindInput (InputBinding binding)

  将输入法与新的应用程序环境绑定,以便稍后启动、停止输入处理。通常在应用程序第一次启用输入法时调用此方法。

  参数

  binding    与输入法绑定的应用程序窗口信息。

  参见

                        InputBinding

                   unbindInput()

 

  public abstract void createSession (InputMethod.SessionCallback callback)

  创建一个新的InputMethodSession,它可处理客户应用程序与输入法的交互。你可以随后用revokeSession(InputMethodSession)销毁会话,这样就不会有任何客户端使用它。

  参数

  callback 新创建会话调用的接口。

 

  public abstract void hideSoftInput (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 void restartInput (InputConnection inputConnection, EditorInfo attribute)

  输入法需重置时调用此方法。

  通常输入焦点从一个文本框移至另一个时调用此方法。

  参数

  inputConnection     可选,确定与文本框通讯的输入通讯通道;如为空,你使用通常绑定的输入通讯通道。

  attribute          文本框(通常是EditText)需要输入的属性

  参见

                            EditorInfo

 

  public abstract void revokeSession (InputMethodSession session)

  关闭并销毁先前由createSession(android.view.inputmethod.InputMethod.SessionCallback)创建的会话。调用后,会话不再有效,对其的调用将失败。

  参数

  session  先前由SessionCallback.sessionCreated()提供的InputMethodSession将被吊销。

 

  public abstract void setSessionEnabled (InputMethodSession session, boolean enabled).

  控制某特定输入法会话是否激活。

  参数

  session  先前由SessionCallback.sessionCreated()提供的InputMethodSession将改变。

 

  public abstract void showSoftInput (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 void startInput (InputConnection inputConnection, EditorInfo info)

  应用程序开始接收文本,输入法准备好为应用程序处理接收事件并返回文本时调用本方法。

  参数

  inputConnection     可选,确定与文本框通讯的输入通讯通道;如为空,你使用通常绑定的输入通讯通道。

  info  需要输入的文本框(通常是EditText)信息。

  参见

                        EditorInfo

 

  public abstract void unbindInput ()

          解除与应用程序的绑定,先前由bindInput(InputBinding)设定的信息对当前输入法无效时调用。

通常在应用程序变为非前台调用。


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582435,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案           两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入...
1220 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9494 0
CentOS下火狐浏览器安装flash插件以及中文输入法
一、flash 在adobe官网下载install_flash_player_11_linux.x86_64.tar.gz; su 输入密码得到root权限; tar -xvf install_flash_player_11_linux.x86_64.tar.gz    解压得到插件 libflashplayer.so; 寻找 firefox 安装目录;   whereis
1567 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13177 0
Android常见输入inputType类型
android:inputType="none"//输入普通字符 android:inputType="text"//输入普通字符 android:inputType="textCapCharact...
1103 0
在红旗5的基础上配置XFCE4上的中文输入法
红旗5的速度明显比4要慢了很多 不过没关系 我们还可以使用XFCE于是我下了个4.1.1版本的是是bin文件,安装的时候有个选项是可以针对i386或以上系列的机器进行优化设置我将xfce安装在默认的...
606 0
centos 5.5 中文显示和中文输入法
一.安装中文支持 方法1。在安装光盘中找到一下包进行安装. rpm -ivh fonts-chinese-3.02-9.6.el5.noarch.rpm rpm -ivh fonts-ISO8859-2-75dpi-1.
659 0
Android EditText 获得输入焦点 以及requestfocus()失效的问题
最近做公司项目的时候,经常会遇到一个问题,就是我为某个控件如EditText设置requestfocus()的时候不管用,比如说登陆的时候,我判断下用户输入的密码,如果正确就登陆,错误就提示密码错误,并且输入框获取焦点,但是实际中确不起作用 package com.
1094 0
Android EditView 第一次点击默认不输入
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
507 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载