2011-06-28 107 views
7

我知道,控制用户的HOME按钮是病态的建议。但我正在开发一个用于教育目的的android锁定应用程序。我正在浏览该网站,并在禁用主页按钮时遇到此link禁用主页按钮

@override 

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

目前我使用上面的代码以禁用我的home键,然而,我发现,即使我有这个在我的onCreate

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

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

回答

8

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

+0

我做到了,但顶部还有通知栏。 不过,如果我把它放在 确实工作<应用软件Android:标签= “@字符串/ APP_NAME” 机器人:主题= “@安卓风格/ Theme.NoTitleBar.Fullscreen”> 加上电源关闭和开启后,通知栏会再次出现。 – edyim

+0

其他人都有解决方案。我现在很绝望。 :( – edyim

+0

你是否在所有的活动中使用了相同的主题?似乎有可能是某个地方不匹配? –

3

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

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

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

    @Override 
    public void onAttachedToWindow() { 
        // TODO Auto-generated method stub 
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
        super.onAttachedToWindow(); 
    } 
    
  • 禁用Powerkey: 在 “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。

+0

感谢您的输入,但是这并不是我想要的应用程序我的应用程序基本上是一个锁屏这是由短信触发的。当前手机屏幕“开”,如果短信到达活动开始时没有通知栏。但是,如果屏幕处于“关闭”状态,KeyguardManager会删除android键盘屏幕,但我会收到通知栏。这可能不是所希望的,因为那里有可能绕过我的锁屏的应用程序。 – edyim

+0

其中是项目DisableAllButton – pengwang

+0

@pengwang在mxplayer中disableAllButton.So它怎么可能? – kyogs

0

校验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" /> 

第一,这个权限仅授予系统应用