2013-03-17 68 views
2

我试图用我自己的应用程序替换股票锁定屏幕。
在我的代码中,我想禁用主页按钮。
我知道如何做到这一点在Android 2.3及以下,
但相同的代码不与Android 4.0+(返回到桌面时,Home键按下)工作

最近我发现叫MiHome的应用程序,它有它自己的锁定屏幕并且能够禁用主页按钮。
有谁知道它是如何实现这?
在Android 4.0及更高版本中禁用主页按钮

回答

3

由于ICS中的安全/可靠性原因,主页按钮被禁用被禁用。 (大多数应用程序使用它为邪恶而不是好)

请参阅以下问题的变通办法。

  1. how can I disable android 4.0 home button
  2. override Home key in android ICS
  3. Disable Home Button in Android ICS (4.0)

似乎是唯一的办法是实现一个主屏幕

+0

这种方法并不能在Android 4.0.3评论由commonsware第二环节的工作。 – Raghunandan 2013-03-17 11:27:07

+0

对不起。似乎这是不可能的ICS不实施一个假的主屏幕。我更新了答案。 – Madushan 2013-03-17 19:40:00

14

有没有办法拦截Android上的主页按钮,除非您将您的应用程序设置为主屏幕。这是出于安全原因,因此恶意应用无法通过覆盖可退出的所有按钮来接管设备。主页按钮是能够离开任何应用程序的一种可靠的拍摄方式。

如果要处理HOME按钮,请实施主屏幕。

0

试试这个

params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT, 
        WindowManager.LayoutParams.MATCH_PARENT, 
        WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, 
        PixelFormat.TRANSLUCENT); 
      params.gravity = Gravity.TOP; 

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      } else { 
       getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
      } 
    mOverlay = (RelativeLayout) inflater 
        .inflate(R.layout.main, (ViewGroup) null); 

    mOverlay.setFitsSystemWindows(false); 
      getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
          | View.SYSTEM_UI_FLAG_FULLSCREEN 
          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
      mWindowManager = (WindowManager) context 
        .getSystemService(Context.WINDOW_SERVICE); 
      mWindowManager.addView(mOverlay, params); 
相关问题