我想在我的应用中点击用户点击的主页按钮上编写一些代码。
我写了以下代码:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();
}
return true;
}
此代码为我提供Toast消息,但不会缩小我的应用程序。
删除以下代码后:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
并且只保留:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();
}
return true;
}
它没有显示我的祝酒消息。
请帮帮我。
我也尝试过:
返回false
暂停方法
但没有奏效。
答案 0 :(得分:2)
请尝试使用return false
,这样您就不会抓住点击事件,而是将其发送到操作系统。
答案 1 :(得分:2)
你应该有这个代码,
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
你的代码中的。删除它不会触发Home键操作。
现在要最小化应用,请执行以下操作,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();
Intent gotoHome= new Intent(Intent.ACTION_MAIN);
gotoHome.addCategory(Intent.CATEGORY_HOME);
gotoHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(gotoHome);
}
return true;
}
但我认为此解决方案不再适用于更高的API级别。
答案 2 :(得分:2)
在onKeyDown中返回true表示事件已被处理。
将代码修改为return false
,以便操作系统进一步处理该事件。
例如:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show();
}
return false; // Signals the KeyEvent.KEYCODE_HOME to be processed further.
}
请参阅onKeyDown文档