代码之家  ›  专栏  ›  技术社区  ›  Waza_Be

在category.home活动中覆盖长按Home键

  •  9
  • Waza_Be  · 技术社区  · 14 年前

    我刚刚创建了自己的“家”,以取代股票安卓一或感觉。

    一切正常,我得到了我想要的一切。我唯一的问题是用我自己的启动程序替换为长按Home键(通常显示你启动的最后6个活动)。

    我成功地将长按菜单按钮替换为以下代码:

    @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\u home替换keyevent.keycode\u菜单

    这是不是一些锁定在代码中的东西,避免用户使用长按?

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

    3 回复  |  直到 9 年前
        1
  •  8
  •   Justin    13 年前

    我读过的每一篇文章都说这是不可能的…以下是一篇关于Android初学者的文章,我在其中提出了一个非常相似的问题:

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

    不过,我最近遇到了一个应用程序,它可以让你通过双击Home键成功地启动它,所以必须要做一些事情。我研究了一会儿这种方法,但没能使它起作用。既然我知道有人知道了,我就再试试看……

    编辑 当覆盖一个长按的主页按钮无法完成时,我已经找到了一种方法成功地实现了双重按下主页按钮。其总体思路如下:

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

    基本上,家庭替换活动只会启动用户指定的真正的家庭应用程序或启动您的应用程序…它从不显示自己的用户界面。

    我发现这很好地工作,实际上有一个应用程序在Android市场上发布,可以做到这一点。如果您想看到它的实际应用,它被称为“快速启动”,发布者名称被列为“magouyaware”

    希望这有帮助!

        2
  •  3
  •   Kirill Podlivaev    9 年前

    你可以为长按Home键注册假活动

    通过添加到清单:

    <intent-filter>
        ...
        <action android:name="android.intent.action.ASSIST" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    
        3
  •  0
  •   amiekuser    14 年前

    我找到了解决家庭钥匙问题的方法。对于您的应用程序,将清单设置为

        <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。

    现在,主按键将Laways停留在同一屏幕上。

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

    安装后,我们应该使意向过滤器看起来像:


    这是与启动程序相同的意向过滤器。

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

    为此,我们需要连接设备/模拟器并启动ADB(Android调试桥)。 然后遵循以下步骤:

    亚行壳牌

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

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

    重新启动。