禁用系统栏Android 4.0

禁用系统栏Android 4.0,android,Android,我知道有很多关于在安卓4.0上隐藏系统栏的讨论,但没有关于在安卓4.0平板电脑上禁用虚拟按钮、状态栏或系统栏功能的讨论 这可能吗?谁能给我指路吗 谢谢 Try FLAG_全屏显示,它应该隐藏状态栏 我做了大量研究来设计锁屏,最终找到了永久禁用系统栏的解决方案,即导航栏(返回、主页、最近的应用程序软键)和状态栏。Android禁用了该功能以覆盖除“后退”按钮之外的系统栏。但要想让这一切顺利进行,还有一些工作要做: 耐心地理解并实施屏幕固定,您将获得成功 您可以创建一个应用程序来控制要在其中实现屏幕

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

这可能吗?谁能给我指路吗


谢谢

Try FLAG_全屏显示,它应该隐藏状态栏

我做了大量研究来设计锁屏,最终找到了永久禁用系统栏的解决方案,即导航栏(返回、主页、最近的应用程序软键)和状态栏。Android禁用了该功能以覆盖除“后退”按钮之外的系统栏。但要想让这一切顺利进行,还有一些工作要做:

耐心地理解并实施屏幕固定,您将获得成功

您可以创建一个应用程序来控制要在其中实现屏幕锁定的所有应用程序,也可以直接在要锁定的同一应用程序中实现屏幕锁定

我将在本文中向您展示后面的实现:

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

您可以通过多种方式执行,最简单的方法是执行命令:

adb外壳dpm设置设备所有者[yourPackageName]/[MyDeviceAdminReceiver]

创建扩展DeviceAdminReceiver的接收器(MyDeviceAdminReceiver)。这里不需要任何代码。有关设备所有者实施的更多信息,请参阅此链接

通过以下方式在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>
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
                    }
锁屏通常需要的额外信息:

@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();
1。如果您的应用程序是启动后出现的第一件事

为此,您需要一个服务(StartBootService)和一个接收器(BootCompletedReceiver)

2。如果您希望您的应用程序在屏幕锁定和解锁后显示 (按下电源按钮可锁定和解锁):

创建扩展服务的AescreenOffService和扩展广播接收器的AescreenOffReceiver,以便在屏幕打开时启动您的活动

有关我在这里提到的所有内容的详细信息,请参阅
这是一篇很好的文章,对我帮助很大。特别感谢作者

我需要至少10个声誉张贴两个以上的链接。因为我是stackoverflow的新手,我没有足够的声誉,所以我很抱歉不能分享我提到的所有链接。一旦我获得访问权限,肯定会更新帖子