【问题标题】:Android - What Intent does home button issue?Android - 主页按钮发出什么意图?
【发布时间】:2011-07-28 02:09:13
【问题描述】:

我想知道设备主页按钮的具体操作是什么?即当你点击主页按钮时发出什么意图、意图类别和动作?回到空白的主屏幕。我想知道在单击我自己的自定义按钮时实现此操作所涉及的内容。谢谢(PS 我知道这不是标准的,但我的设备也不是)。

【问题讨论】:

    标签: android


    【解决方案1】:

    请参考here

    此外,您应该能够看到使用 logcat 调试选项从 adb 中单击 Home 按钮后会发生什么;

    adb logcat *:W

    【讨论】:

      【解决方案2】:

      这是 xml 中的意图,以防您正在寻找它:

          <activity
              android:name=".MainActivity"
              android:launchMode="singleTask"
              android:excludeFromRecents="true">
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
                  <!-- The following two intent-filters are the key to set homescreen -->
                  <category android:name="android.intent.category.HOME" />
                  <category android:name="android.intent.category.DEFAULT" />
      
              </intent-filter>
          </activity>
      

      【讨论】:

        【解决方案3】:

        可以参考代码:

        Button btnHome;
        btnHome = (Button) findViewById(R.id.Home);
        btnHome.setOnClickListener(new OnClickListener() {  
        
            @Override
            public void onClick(View v) {
                // sendKey(KeyEvent.KEYCODE_HOME);
                myHandler.sendEmptyMessage(Home);
            }
        });
        
        class myRunnable implements Runnable {
        
            public myRunnable(int key) {
                this.keycode = key;
            }
        
            int keycode;
        
            @Override
            public void run() {
                sendKey(keycode);
            }
        
            public void sendKey(int keyCode) {
                System.out.println("Judy--------------------->sendkey " + keyCode);
                long now = SystemClock.uptimeMillis();
                long n = System.currentTimeMillis();
                try {
                    KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN,
                            keyCode, 0);
                    KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP,keyCode, 0);
                    IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager
                            .getService("window"));
                    wm.injectKeyEvent(down, false);
                    wm.injectKeyEvent(up, false);
                } catch (RemoteException e) {}
            }
        }
        

        【讨论】:

        • 请问myHandler 是什么?
        • @Mr_and_Mrs_D myHandler 是一个处理程序。
        • 真的吗?你能解释一下你的代码吗?您的代码中没有 myHandler 的定义 - 请编辑您的答案,解释它如何回答问题并让我知道
        【解决方案4】:

        如果你想显示主屏幕,你可以这样做:

        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        

        更新:查看此示例应用程序:http://developer.android.com/resources/samples/Home/index.html

        【讨论】:

        • 这会对发布它的应用程序产生什么影响?会去后台吗?
        • 是的。它不会关闭应用程序,只会将主屏幕带到前台。
        • 这和点击主页按钮的效果一样吗?
        • 据我所知,是的。请记住,任何应用程序都可以捕获 keydown 事件并在事件传递(或不传递)到框架(services.jar,如果我没记错的话)之前用它做任何应用程序想要的事情
        • @Aleadam “它不会关闭应用程序” Android 中没有“关闭应用程序”之类的东西。
        猜你喜欢
        • 1970-01-01
        • 2018-08-12
        • 1970-01-01
        • 1970-01-01
        • 2015-06-27
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多