当然,前提是需要对按键与对应的值有个大致的了解,而且,在发送消息之前需要对输入的键值进行空与整型的合法性判断,否则会出现难以察觉的异常。
4、经过测试,发现一些按键���不能通过模拟来达到真实效果的。
如Home键,官方给出的文档显示:Home键不再对一般应用允许模拟,即设置了权限。
和手机全屏截取API类似,需要System级或者Root级应用才可以实现想要的效果。
其所给出的替代方案也行不通:Called to process key events. You can override this to intercept all key events before they are dispatched to the window. Be sure to call this implementation for key events that should be handled normally.
5、下面给出一个比较容易的替代方案,虽然比较山寨,效果还行:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
this.startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
需要注意的是,ACTION和CATEGORY的设置和AndroidManifest.xml文件中一致,
标志位设置为Intent.FLAG_ACTIVITY_NEW_TASK,如果不是,则不是以一个新任务的角色生成,会出现问题。