覆盖Home键长按类别.HOME活动

Waz*_*_Be 9 android android-homebutton

我刚刚创建了自己的"Home"来替换股票android或者Sense.

一切都很好,我得到了我想要的一切.我唯一的问题是用我自己的发射器替换长按主页键(通常显示你发起的最后6个活动).

我用以下代码成功替换了长按MENU按钮:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

//Log.i(TAG,"Keycode: "+keyCode);

if (keyCode == KeyEvent.KEYCODE_MENU) {
    // this tells the framework to start tracking for
    // a long press and eventual key up. it will only
    // do so if this is the first down (not a repeat).

    event.startTracking();
    return true;
}
(...)
Run Code Online (Sandbox Code Playgroud)

这部分适用于长按:

  @Override
    public boolean onKeyLongPress(int keyCode, KeyEvent event) {

        //Log.i(TAG,"LONG"+keyCode);
        Toast.makeText(Launcher.this,"LONG "+keyCode, Toast.LENGTH_SHORT).show();

        if (keyCode == KeyEvent.KEYCODE_MENU) {
        (...)
Run Code Online (Sandbox Code Playgroud)

但问题是我无法用KeyEvent.KEYCODE_HOME替换KeyEvent.KEYCODE_MENU

是什么东西锁定在代码中,以避免用户使用Home长按?

非常感谢你给我的所有信息.

Jus*_*tin 8

我读过的所有内容都表明这无法做到......以下是关于Android初学者的帖子,我在其中提出了一个非常相似的问题:

http://groups.google.com/group/android-beginners/browse_thread/thread/d8cdcd1c52d79ef1/0f4b184da6f248a9?lnk=gst&q=home+key#0f4b184da6f248a9

但是,我最近遇到了一个应用程序,它成功地允许您通过双击主页键来启动它,因此必须要做一些事情.我暂时研究了这种方法,但无法让它发挥作用.现在,我知道其他人已经知道了,我将再次尝试......

编辑 虽然无法完成长按主页按钮的覆盖,但我找到了一种成功实现双按主页按钮的方法.一般的想法如下:

  1. 让您的应用程序充当家庭替代应用程序(查看SDK示例中的示例主页应用程序)
  2. 允许在您的应用中指定要使用的家庭应用(向用户显示家庭替换应用列表非常简单)
  3. 在第一次按下主页按钮时启动计时器.
  4. 如果计时器超时,请启动主应用程序
  5. 如果用户在计时器停止之前第二次按下主页键,则启动您的应用程序

从本质上讲,家庭替换活动只会启动用户指定的真实家庭应用程序或启动您的应用程序...它永远不会显示自己的用户界面.

我发现这非常有效,并且实际上在Android Market上发布了一个应用程序.如果您希望在行动中看到它,它被称为"快速启动",发布者名称被列为"MagouyaWare"

希望这可以帮助!


Kir*_*aev 5

您可以为长按HOME键注册虚假活动

通过添加到清单:

<intent-filter>
    ...
    <action android:name="android.intent.action.ASSIST" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)