悬浮窗中有editText问题
1.最近在弄悬浮窗,然后到github上找到了EasyFloat
EasyFloat项目地址:https://github.com/princekin-f/EasyFloat
这个很好用
2.我的这个悬浮窗带有EditText 这时候就引发了焦点问题,悬浮窗里的EditText获取到了焦点,其他Activity的EditText就获取不到焦点了,点击其他应用的EditText一点反应也没有
3.这时候想把悬浮窗的EditText焦点清楚不就好了,结果还是不能解决我的问题
4.点了很多次后,我发现,当焦点在悬浮窗上时,按一下返回键,就可以点击其他应用的EditText,然后我就通过模拟点击返回键来解决这个办法
这是我的模拟代码:
/**
* 用Runtime模拟按键操作
*
* @param keyCode 按键事件(KeyEvent)的按键值
*/
private fun sendKeyCode1(keyCode: Int) {
if(isRunningProcesses(this)){
}else{
try {
val keyCommand = "input keyevent " + keyCode
// 调用Runtime模拟按键操作
Runtime.getRuntime().exec(keyCommand);
} catch (e:Exception ) {
e.printStackTrace();
}
}
}
其中有一个判断
isRunningProcesses(this)
这个方法是用来判断,当前在首页的活动是不是本应用的
因为当你模仿点击事件时,如果是在本应用中做了这个模拟操作,就会执行返回键,而我们的需求是在本应用内不执行返回键,所以需要有这个判断,接下来是这个方法的具体代码
fun isRunningProcesses(context:Context):Boolean {
val am = context.getSystemService(ACTIVITY_SERVICE) as ActivityManager
val runningAppProcesses = am.runningAppProcesses //获取运行中进程集合
val appProcesses = runningAppProcesses[0]
val isfor = appProcesses.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
Log.d("测试包名","runningAppProcesses.name==>${appProcesses.processName},kkk==$isfor")
return appProcesses.processName == packageName && isfor
}
这就是我做悬浮窗的解决过程,终于完成悬浮窗输入了。