一般来说模拟home键大多使用以下方法:
val i = Intent(Intent.ACTION_MAIN)
i.flags = Intent.FLAG_ACTIVITY_NEW_TASK
i.addCategory(Intent.CATEGORY_HOME)
startActivity(i)
问题是我们的应用运行在机顶盒,盒子里面安装了两个launcher,上述代码执行后会弹出选择launcher界面。测试发现遥控器点击home键并不会弹出launcher选择界面,改用Instrumentation:
Thread {
Thread.sleep(400)
println("模拟Home键点击")
var ins = Instrumentation()
ins.sendKeyDownUpSync(KeyEvent.KEYCODE_HOME)
}.start()
注意:sendKeyDownUpSync不能在主线程调用。
如果运行如上代码可能会报错,提示需要申请权限:
<uses-permission android:name="android.permission.INJECT_EVENTS"/>
和申请系统应用android:sharedUserId=“android.uid.system” 但是此权限为系统应用才能申请,所以要系统签名的app才行。