Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Kiosk模式下运行Android应用程序,禁用安全模式并防止设备硬复位?_Android_Reset_Android 8.0 Oreo_Kiosk Mode_Safe Mode - Fatal编程技术网

如何在Kiosk模式下运行Android应用程序,禁用安全模式并防止设备硬复位?

如何在Kiosk模式下运行Android应用程序,禁用安全模式并防止设备硬复位?,android,reset,android-8.0-oreo,kiosk-mode,safe-mode,Android,Reset,Android 8.0 Oreo,Kiosk Mode,Safe Mode,如何在Kiosk模式下运行Android应用程序,禁用安全模式并防止设备硬复位? 我的应用程序有以下3个要求: 在设备的正常模式下,仅向在校学生显示特定的应用程序。这可以通过禁用默认启动器并启用 禁用或将密码设置为安全模式,以避免使用系统应用程序或内置应用程序(youtube、视频播放器、音乐应用程序等) 通过禁用设备硬键(电源按钮、音量按钮)的长按来限制设备的硬复位 我已经解释了这些要求,并得出了以下详细理解。 我们可以重新设计school students应用程序,使其成为一个启动程序,将在

如何在Kiosk模式下运行Android应用程序,禁用安全模式并防止设备硬复位?

我的应用程序有以下3个要求:

  • 在设备的正常模式下,仅向在校学生显示特定的应用程序。这可以通过禁用默认启动器并启用

  • 禁用或将密码设置为安全模式,以避免使用系统应用程序或内置应用程序(youtube、视频播放器、音乐应用程序等)

  • 通过禁用设备硬键(电源按钮、音量按钮)的长按来限制设备的硬复位

  • 我已经解释了这些要求,并得出了以下详细理解。

  • 我们可以重新设计school students应用程序,使其成为一个启动程序,将在kiosk模式下运行。这意味着我们不需要任何其他(试用版)启动程序

  • 我们可以通过应用程序或类似的其他应用程序禁用对系统或第三方应用程序的安全模式访问。它只适用于Android棉花糖6.0。但Android有一个限制——它不能在牛轧糖/奥利奥(Nougat/Oreo)设备上运行。或者,我们尝试处理电源按钮按键,以防止设备进入安全模式。但Android不允许从我们的应用程序中访问或收听power key press以及其他各种功能

  • ANDROID 7.0(牛轧糖)和8.0(奥利奥)的重要提示

    根据,目前无法为运行Android 7.0或8.0的手机启用安全模式锁定。如果以前启用过安全模式锁定的旧款手机更新为这些版本的Android,安全模式锁定功能将被禁用

  • 我们无法阻止任何设备进行硬重置,因为这主要是在手机关机后进行的,应用程序无法控制。但有一个昂贵的替代方案。我们可以使用COSU设备并设计自定义固件。有关COSU的更多详细信息,请访问以下链接。
  • 有人能帮我添加更多的想法,让我更详细地了解这种情况吗


    我走的方向对吗?或者我是否正确地描述了它?

    看一看,如果没有定制的设备固件,似乎无法完成更多的工作。

    你能设计并部署你的应用程序吗?这为您在设备上提供了最大的可能性,但部署可能会很痛苦,具体取决于环境:不适合公开发布,但如果您能够管理设备组,则部署是可行的

    100%信息亭模式不可能。

    限制硬重设:硬重设选项是引导加载程序的一部分,因此很难阻止设备进行出厂重设,

    我有一个解决方案,但只有当设备根目录时才有效

    限制硬重置:将apk文件复制到系统/应用程序,当设备恢复后,Android将自动从系统/应用程序文件夹重新安装所有应用程序

    禁用系统应用程序:要禁用系统应用程序或任何应用程序,请运行shell命令

    pm disable <package name>
    
    禁用导航栏和状态栏
    隐藏

     private void hideNavigationBar(){
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("pm disable com.android.systemui\n");
            os.flush();
            try {
            Process process = null;
            process = Runtime.getRuntime().exec("su");
            DataOutputStream osReboot = new DataOutputStream(process.getOutputStream());
            osReboot.writeBytes("reboot\n");
            osReboot.flush();
            process.waitFor();
                } 
                catch (IOException e) {
                    e.printStackTrace();
                } 
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
    
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    恢复正常

    private void showNavigationBar(){
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("pm enable com.android.systemui\n");
            os.flush();
            os.writeBytes("reboot\n");
            os.flush();
            process.waitFor();
    
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    注意:运行shell命令后,设备将重新启动

    你和根一起玩,所以你和你自己,如果有任何疑问,请在开始编码前命令


    需求#2和#3是设备的需求,而不是应用程序。我不想开发设备锁定解决方案,因为它本身就是一种产品,购买现有解决方案更便宜。在我的例子中,一些客户使用kiosk模式,它说他们也支持Oreo。此外,它们还用保护壳包装设备。您好,在hideNavigationBar()方法中,它说“变量进程已经在范围中定义”,因为有两个同名的变量:进程和操作系统
    private void showNavigationBar(){
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("pm enable com.android.systemui\n");
            os.flush();
            os.writeBytes("reboot\n");
            os.flush();
            process.waitFor();
    
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }