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

我刚刚创建了自己的“家”,以取代股票的Android或Sense。

一切工作正常,我得到我想要的一切。 我唯一的问题是用我自己的启动器替换为长按Home键(通常显示您最近启动的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;
}
(...)

而这部分是为了长时间按下:

  @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) {
        (...)

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

是否在代码中锁定了某些内容以避免用户使用家庭长按?

非常感谢您提供给我的所有信息。


我读过的所有东西都说这不能完成......这是一篇Android初学者的帖子,我问了一个非常类似的问题:

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

不过,我最近遇到了一个成功的应用程序,它可以让你通过双击home键来启动它,所以必须有一些可以完成的事情。 我研究了这种方法一段时间,但无法使其工作。 现在我知道有人想通了,我会再试一次....

编辑虽然覆盖主页按钮的长按无法完成,但我找到了一种成功实现双按主屏幕按钮的方法。 对此的总体思路如下:

  • 让您的应用充当家庭替代应用(查看SDK示例中的示例家庭应用)
  • 在您的应用中允许指定要使用的家庭应用(向用户展示家庭替代应用列表非常简单)
  • 在首次按下主页按钮时启动一个计时器。
  • 如果计时器超时,请启动家庭应用程序
  • 如果用户在计时器停止之前再次按Home键,请启动您的应用程序
  • 从本质上讲,家庭替换活动无非是启动用户指定的真实家庭应用程序或启动您的应用程序......它从不显示自己的用户界面。

    我发现这个效果非常好,并且实际上有一个在Android Market上发布的应用程序可以实现这一点。 如果您想要看到它的实际使用情况,则称为“快速启动”,并将发布者名称列为“MagouyaWare”

    希望这可以帮助!


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

    通过添加到清单:

    <intent-filter>
        ...
        <action android:name="android.intent.action.ASSIST" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    

    我找到了解决HOME键的方法。 为你的应用程序设置清单

        <action android:name="android.intent.action.MAIN" />                           <category android:name="android.intent.category.HOME" />                              <category android:name="android.intent.category.DEFAULT" />                            <category android:name="android.intent.category.MONKEY"/> Now ur application is an alternate Launcher application.
    

    使用adb,并使用软件包管理器禁用启动器应用程序

    pm禁用com.android.launcher2。

    现在Home键按下将停留在同一屏幕上。

    其实没有太多的代码。我会尽力解释它,如果它有帮助。 对于清单文件中的andriod应用程序,我们通常将意图过滤器保存为: -

    Instaed我们应该使意图过滤器看起来像: -


    这是与LAuncher相同的意图过滤器。

    现在我们有一个备用launchjer应用程序。 为了使它成为唯一的启动器应用程序,我们必须解除/禁用现有的启动器应用程序(android中的默认启动器)。

    为此,我们需要连接设备/仿真器并启动adb(android调试桥)。 然后按照以下步骤: -

    adb外壳

    pm list packages //这将列出所有安装的软件包

    pm disable com.android.launcher //这将禁用启动程序。

    重启。

    链接地址: http://www.djcxy.com/p/26161.html

    上一篇: overriding the Home Key Long press in a category.HOME activity

    下一篇: GIT: Can't checkout out branch