美文网首页IT技术
Android物理按键代码名称和监听

Android物理按键代码名称和监听

作者: 蘑菇v5 | 来源:发表于2019-01-07 12:16 被阅读22次

【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在简书。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!

一、常用物理按键

  • 电源键

KEYCODE_POWER

  • 后退键

KEYCODE_BACK

  • 菜单键

KEYCODE_MENU

  • HOME

KEYCODE_HOME

  • 相机键

KEYCODE_CAMERA

  • 音量键

KEYCODE_VOLUME_UP / KEYCODE_VOLUME_DOWM

  • 搜索键

KEYCODE_SEARCH

  • 确定键

KEYCODE_DPAD_CENTER

  • 方向键

KEYCODE_DPAD_UP      
KEYCODE_DPAD_DOWN     
KEYCODE_DPAD_LEFT      
KEYCODE_DPAD_RIGHT

  • 键盘键

KEYCODE_0...KEYCODE_9   
KEYCODE_A....KEYCODE_Z

二、监听

重写onKeyDown方法

if(keyCode == event.KEYCODE_BACK) {

return true;

}else if (keyCode == event.KEYCODE_MENU){

return true;

}else if (keyCode == event.KEYCODE_VOLUME_UP){

return true;

}else if (keyCode == event.KEYCODE_VOLUME_DOWN){

return true;

}else {

return super.onKeyDown(keyCode, event);

}

重写以上代码,可以禁用返回键、菜单键,音量上下键有些恶意代码通过修改返回键达到HOME键效果,达到进程还保留在系统中
关键代码如下监听返回键,相当于点击home:

PackageManager pm = getPackageManager();
ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), 0);
if (keyCode == KeyEvent.KEYCODE_BACK) {
ActivityInfo ai = homeInfo.activityInfo;
Intent startIntent =new Intent(Intent.ACTION_MAIN);
startIntent.addCategory(Intent.CATEGORY_LAUNCHER);
startIntent.setComponent(new ComponentName(ai.packageName, ai.name));
startActivitySafely(startIntent);
return true;
}else{
return super.onKeyDown(keyCode, event);
}

相关文章

网友评论

    本文标题:Android物理按键代码名称和监听

    本文链接:https://www.haomeiwen.com/subject/oziyrqtx.html