2012-10-01 42 views
0

我知道在Android 4.0上隐藏系统栏的讨论很多,但没有讨论禁用Android 4.0平板电脑上的虚拟按钮或状态栏或系统栏的功能吗?禁用系统栏Android 4.0

这可能吗?有人能指引我走向正确的方向吗?

谢谢!

回答

0

我已经做了很多的研究,设计一个锁屏和终于找到了永久禁用系统栏的解决方案,即导航栏(后退,主页,最近的应用程序软键)和状态栏。 Android禁用了该功能以覆盖除后退按钮之外的系统栏。但有一点工作,使这项工作:

理解和实施屏幕固定耐心,你会成功。

你可以创建一个应用程序来控制你想要实现的所有应用程序屏幕固定或者你可以直接在你想要固定的应用程序中实现屏幕固定。

我要告诉你在这篇文章中后实施:

1.首先您的应用程序应该是设备所有者。

你能做到在几个方面和最简单的就是要执行的命令:

亚行外壳DPM设置设备所有者[yourPackageName]/[MyDeviceAdminReceiver]

创建一个接收器(MyDeviceAdminReceiver )扩展了DeviceAdminReceiver。你在这里不需要任何代码。有关设备所有者实施更多信息请参考以下链接
http://florent-dupont.blogspot.com/2015/02/10-things-to-know-about-device-owner.html

注册在AndroidManifest.xml接收文件是这样的:

<receiver 
     android:name=".MyDeviceAdminReceiver" 
     android:label="@string/app_name" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data 
     android:name="android.app.device_admin" 
     android:resource="@xml/device_admin" /> 

     <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
     </intent-filter> 
    </receiver> 

2.您的onCreate方法应该是这样:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lock_screen); 

    ComponentName deviceAdmin = new ComponentName(this, MyDeviceAdminReceiver.class); 
    DevicePolicyManager mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 


    if (mDpm.isDeviceOwnerApp(getPackageName())) { 
     mDpm.setLockTaskPackages(deviceAdmin, new String[]{getPackageName()}); 
    } 

    if (mDpm.isLockTaskPermitted(this.getPackageName())) 
     startLockTask(); 

3.要取消固定屏幕并使导航栏功能

调用函数stopLockTask()在代码中您想要解除锁定的位置。例如,在我的应用程序,只要我验证用户已经输入了正确的密码,我调用这个函数:

if (userInput.length() == 4) { 

        if (userInput.equals(passcode)) { 
         userInput = ""; 
         etxtPasscodeDisplay.setText(""); 
         stopLockTask(); // this is what you need 
         unlockHomeButton(); // A method to show home screen when 
         passcode is correct 
         finishAffinity(); //kill other activities 
        } 

额外的资讯通常需要lockscreens:

1。如果您的应用程序是在引导后出现的第一件事:

你需要一个服务(StartAtBootService)和该接收器(BootCompletedReceiver)。

2.如果您想您的应用程序的屏幕锁定后显示出来,并解锁 (在按下电源按钮锁定和解锁):

创建扩展AEScreenOnOffService延伸服务和AEScreenOnOffReceiver BroadcastReceiver在屏幕开启时启动您的活动。

有关我在这里提到的所有内容的详细信息,请参考http://www.sureshjoshi.com/mobile/android-kiosk-mode-without-root/
这是一篇很好的写作,对我有很大的帮助。特别感谢作者。

我需要至少10个声望才能发布两个以上的链接。由于我是新手,我没有足够的声誉,所以我很抱歉无法分享我提到的所有链接。一旦获得访问权,肯定会更新帖子。