自定义启动器

时间:2016-09-15 09:53:47

标签: android

我正在使用自定义启动器,我试图覆盖后退按钮,该按钮无法以所需方式工作。

此启动器的目标是启动特定应用程序(预定义)并在背面加载已安装的应用程序列表。当此启动器运行时,它会启动所需的应用程序,但会在双击时加载已安装的应用程序列表。在单个背面按下它可以将用户带到黑屏或前一个屏幕(如果有的话),而在另一个背面按下它会加载一个应用程序列表。我使用了keyCodeonBackPressed()

代码如下。

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);
}

2 个答案:

答案 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