我正在使用自定义启动器,我试图覆盖后退按钮,该按钮无法以所需方式工作。
此启动器的目标是启动特定应用程序(预定义)并在背面加载已安装的应用程序列表。当此启动器运行时,它会启动所需的应用程序,但会在双击时加载已安装的应用程序列表。在单个背面按下它可以将用户带到黑屏或前一个屏幕(如果有的话),而在另一个背面按下它会加载一个应用程序列表。我使用了keyCode
和onBackPressed()
。
代码如下。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Intent i = new Intent(this, AppListActivity.class);
startActivity(i);
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 0 :(得分:0)
评论
return true;
尝试并让我知道..它对我有用
答案 1 :(得分:0)
这可能与this
重复由于一个backPress意味着有一个动作而双击有一个动作,你需要有一些计数器,这也意味着一个延迟。我相信这正是您所寻找的,其灵感来自上述链接中的答案。单个backPress将有500毫秒的延迟。希望它有所帮助。
重写以符合您的需求,但基本上是说:
boolean doubleBackToExitPressedOnce = false;
private static final int PERIOD = 500;
@Override
public void onBackPressed(){
if (doubleBackToExitPressedOnce) {
Intent i = new Intent(this, LoginActivity.class);
startActivity(i);
this.finish();
return;
}
this.doubleBackToExitPressedOnce = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
back();
}
}, PERIOD);
}
public void back(){
super.onBackPressed();
}
编辑: 我想我误解了你想要做的事情。我相信如果你替换
,这应该有效Intent i = new Intent(this, LoginActivity.class);
startActivity(i);
this.finish();
带
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
if (launchIntent != null) {
startActivity(launchIntent);
}
并使用正确的包名称。找到了这个答案here