9

我刚刚创建了自己的“家”来替换库存的 android one 或 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;
}
(...)

这部分用于长按:

  @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

那是代码中锁定的东西,可以避免用户使用主页长按吗?

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

4

3 回答 3

8

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

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

但是,我最近遇到了一个应用程序,它成功地允许您通过双击主页键来启动它,所以必须有一些可以做的事情。我研究了这种方法一段时间,但无法让它发挥作用。既然我知道其他人想通了,我会再试一次......

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

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

从本质上讲,home-replacement 活动只不过是启动用户指定的真实家庭应用程序或启动您的应用程序......它从不显示自己的 UI。

我发现这很好用,并且实际上在 Android Market 中发布了一个应用程序来执行此操作。如果您想看到它的实际效果,它被称为“快速启动”,出版商名称被列为“MagouyaWare”

希望这可以帮助!

于 2010-07-08T23:18:07.000 回答
5

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

通过添加到清单:

<intent-filter>
    ...
    <action android:name="android.intent.action.ASSIST" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
于 2015-11-12T13:35:53.630 回答
0

我找到了解决 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,并使用包管理器禁用启动器应用程序

下午禁用 com.android.launcher2。

现在 Home 键按下将始终保持在同一屏幕上。

实际上没有太多代码。如果有帮助,我会尝试解释它。对于manifest文件中的andriod应用,我们一般保持intent filter为:-

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


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

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

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

亚行外壳

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

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

重启。

于 2010-12-27T11:57:25.613 回答