【问题标题】:Home button disable主页按钮禁用
【发布时间】:2011-09-24 07:47:09
【问题描述】:

我知道为用户控制 HOME 按钮是不明智的。但我正在开发一个用于教育目的的 android 锁定应用程序。我正在浏览该网站并在禁用主页按钮时遇到了这个link

@override

public void onAttachedToWindow()
{  
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
       super.onAttachedToWindow();  
}

目前我正在使用上面的代码来禁用我的主页按钮,但是我确实注意到,即使我的 onCreate 中有这个

getWindow.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

我无法删除我的通知栏删除。 请指教。

【问题讨论】:

    标签: android android-homebutton


    【解决方案1】:

    只需为您的活动使用不同的主题。在 Manifest.xml 中,将活动的主题属性设置为 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

    【讨论】:

    • 我做了,但顶部仍然有通知栏。 加上关机再开机后通知栏再次出现。
    • 其他人有解决方案。我现在很绝望。 :(
    • 您的所有活动都使用相同的主题吗?似乎某处可能不匹配?
    • 不。我只在锁屏活动中使用它。我想知道是否可能是导致通知出现的 onAttachedToWindow 和 WindowManager.LayoutParams.TYPE_KEYGUARD。
    • 没有任何开源锁屏替代品你可以看看吗?
    【解决方案2】:

    您可以禁用电源按钮! 你可以试试这个: 项目:DisableAllButton

    • 禁用搜索,返回键: 在“DisableAllButton.java”中

      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          return false;
      }
      
    • 禁用主页键: 在“DisableAllKey.java”中

      @Override
      public void onAttachedToWindow() {
          // TODO Auto-generated method stub
          this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
          super.onAttachedToWindow();
      }
      
    • 禁用电源键: 在“DisableAllKey.java”中

      KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
      KeyguardManager.KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
      lock.disableKeyguard();
      
    • 在 AndroidManifest 中

      <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
      
    • 并设置全屏 在 AndroidManifest 中

      <application android:icon="@drawable/icon" android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
      

    完成! :D。

    【讨论】:

    • 感谢您的意见。然而,这并没有在我的应用程序中得到我想要的。我的应用程序基本上是一个由短信触发的锁屏。当前,手机屏幕“打开”,如果短信到达,则在没有通知栏的情况下启动活动。但是,如果屏幕“关闭”,KeyguardManager 确实会删除 android Keyguard 屏幕,但我会收到一个通知栏。这可能是不可取的,因为那里可能有可以绕过我的锁屏的应用程序。
    • DisableAllButton 项目在哪里
    • @pengwang 在 mxplayer disableAllButton.So 这怎么可能?
    • @kyogs 如果你禁用 Home 键,我认为你应该重载 onuserhint
    • @pengwang 我同意你的看法。但是你知道禁用 Home 键吗?
    【解决方案3】:

    查看Android源代码,View.java

    public static final int STATUS_BAR_DISABLE_HOME = 0x00200000;
    

    STATUS_BAR_DISABLE_HOME 标志对标准 api 隐藏。

    我们可以只使用 0x00200000 来设置系统 ui 可见性,如:

    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(decorView.getSystemUiVisibility()|0x00200000);
    

    但你应该添加

    <uses-permission android:name="android.permission.STATUS_BAR" />
    

    首先,此权限仅授予系统应用

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多