最近在做一个悬浮窗功能时,遇到了问题,就是当软键盘弹出时控制悬浮窗隐藏,软键盘关闭时又显示出来。毕竟弹出软键盘时被悬浮窗阻挡用户体验不好。
上网百度(额,英语是硬伤)各种资料各种苦逼,差不多都是在Activity 中监听布局变化的。
经过各种折磨后终于想到了,通过获取正在运行的进程列表遍历出
拿到包名再和默认输入法包名比较。
代码如下:
/**
* 软键盘状态判断
* @param context
*/
public void inputMethodSate(Context context) {
//得到默认输入法包名
String defaultInputName = Settings.Secure.getString(getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
defaultInputName = defaultInputName.substring(0, defaultInputName.indexOf("/"));
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
boolean isInputing = false;
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance =