禁用 Android 幼儿应用程序中的主页按钮?

2024-04-17

我开发了一个应用程序,它是一个图片幻灯片放映,当您点击它们时,每个图片都会播放声音。这就像一本适合2-4岁孩子的图画书。

问题是,由于 Android 不会让您捕获按下主页按钮并基本上禁用它,因此当父母将手机交给孩子与无人看管(勇敢的父母)一起玩时,孩子可能会无意中退出应用程序,然后拨打电话或否则调整手机。

目前还有另外两个应用程序针对此问题提供了伪修复。这些应用程序是 Toddler Lock 和 ToddlePhone。我尝试联系这些应用程序的开发人员寻求一些指导,但他们不愿意透露任何信息,如果可以的话,但是这里有人有任何建议吗?

看起来这两个其他应用程序的作用就像主屏幕替换应用程序。当您在这些应用程序上启用“儿童防护模式”时,系统会提示用户选择要执行操作的应用程序,选项包括“Launcher、LauncherPro 等”。加上幼儿应用程序。然后,您必须将幼儿应用程序设置为默认应用程序,瞧,手机被“锁定”,并且在“解锁”手机时只能使用组合键或触摸屏幕的四个角等来“解锁”。您的正常主屏幕应用程序默认已恢复。下次启用“儿童安全模式”时,您甚至不必将幼儿应用程序设置为默认应用程序。

我读到这两个应用程序在三星手机上存在问题,它们可能会导致无限的崩溃和重新启动循环,需要恢复出厂设置才能修复。显然,这不是解决问题的理想解决方案,但它看起来是目前唯一可用的解决方案。

有人对如何实施“儿童安全模式”有任何想法吗?


我需要让幼儿锁定新应用程序,并且不想使用启动器。 这就是我所做的,您可以在以下位置查看该应用程序https://play.google.com/store/apps/details?id=com.justforkids.animalsounds https://play.google.com/store/apps/details?id=com.justforkids.animalsounds

  1. 当锁被激活时,启动一个服务,当锁被停用时停止它
  2. 该服务检查运行最多的应用程序,如果不是我的活动,该服务将启动我的活动
  3. 仍然存在一个问题,当用户单击“home”时,我的 Activity 再次启动需要大约 6 秒的时间。我认为这是 Android 中的一项安全功能,但不确定。为了绕过这个问题,当该服务检测到另一个应用程序可见时,它会添加一个顶视图(作为警报窗口),该视图覆盖主屏幕,并持续应用程序重新启动所需的几秒钟。

对于步骤 3,以下是更多详细信息:

创建覆盖布局,例如文件locked_overlay.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#d0000000"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:text="@string/app_name"
        android:textColor="#fff"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Locked mode is on"
        android:textColor="#fff"
        android:textSize="18sp" />

    </LinearLayout>

</FrameLayout>

在您的服务中显示或隐藏叠加层使用:

  private View lockedOverlay = null;

  private void hideLockedOverlay() {
    if (lockedOverlay != null) {
      WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
      windowManager.removeView(lockedOverlay);
      lockedOverlay = null;
    }
  }

  private void showLockedOverlay() {
    if (lockedOverlay != null) {
      return;
    }

    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
    WindowManager.LayoutParams viewLayoutParams = new WindowManager.LayoutParams(
    LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
        | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
        PixelFormat.TRANSLUCENT);
    viewLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;

    LayoutInflater inflater = LayoutInflater.from(this);
    lockedOverlay = inflater.inflate(R.layout.locked_overlay, null);
    windowManager.addView(lockedOverlay, viewLayoutParams);
  }

您将需要许可

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用 Android 幼儿应用程序中的主页按钮? 的相关文章

随机推荐

  • SD卡传输(存储空间不足)

    我试图让我的应用程序能够移动到 SD 卡 到目前为止 我已将属性 android installLocation auto 添加到我的清单文件中 当我尝试在手机上将应用程序的存储选项从内部移动到外部 75MB 时 可以选择移动它 但在完成
  • 通过 HTTPS 的 Ajax GET 请求

    我怎样才能发送ajaxGET请求结束HTTPS get抛出这个 XMLHttpRequest cannot load https Origin null is not allowed by Access Control Allow Orig
  • 让人们在电影院就座

    这是基于我读到的一篇关于大型软件公司提出的谜题和面试问题的文章 但它有一个转折 一般问题 有一种算法可以让人们在电影院就座 让他们直接坐在朋友旁边 而不是敌人旁边 技术问题 给定一个 N M 网格 用 N M 1 项填充网格 每个项目都有一
  • 作业计划程序未在 Android N 上运行

    作业计划程序在 Android Marshmallow 和 Lollipop 设备上按预期工作 但在 Nexus 5x Android N 预览版 上未运行 安排作业的代码 ComponentName componentName new C
  • Chrome 堆快照——分离节点没有颜色

    我正在跟进本教程 https developers google com web tools chrome devtools memory problems 在 使用堆快照发现分离的 DOM 树内存泄漏 下 当我搜索分离节点时 我看到一堆
  • 如何在 Spring 中将对象添加到应用程序范围

    我们可以使用设置请求属性Model or ModelAndViewSpring 中的对象 我们可以用 SessionAttributes将属性保留在会话范围内 那么我怎样才能将属性放入applicationSpring中的作用域 sprin
  • 四叉树和Kd树

    我有一组不同位置的纬度和经度 也知道我当前位置的纬度和经度 我必须找出距离当前位置最近的地方 Kdtree 和四叉树中哪种算法最适合从纬度和经度集合中找出邻居位置 一种相对于另一种有什么优势 我们如何在 C 中将这些实现到算法中以实现上述目
  • 可以集成到 C# 应用程序中的 Diff 工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Swift - 从 ISO8601 日期字符串检索时区

    我以这种格式保存在数据库中的日期 yyyy MM dd T HH mm ssZ 例如 2018 05 17T11 15 00 0330 时区有所不同 以用户本地时区为准 我想检索并显示日期 如 2018 年 5 月 17 日上午 11 点
  • 选择 Scala Web 框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 每页新/更新图标

    认为有人可能知道那里的脚本 或者知道如何更新网站每个部分的图标 我正在开发的构建的每个部分都有强烈的颜色 我认为根据您所在的部分更新图标的颜色可能是一个很好的 UI 风格 这些可能是一系列图标 但会强制进行更改 而不仅仅是在每个部分中添加
  • 使用C++访问桌面上的文件

    我使用的是 Windows 7 我在桌面上创建了一个名为test txt 如何使用 C 访问该文件 例如 考虑以下代码 include
  • Jprofile可以连接到docker中运行的JVM

    我是 JProfiler 的新手 我最近遇到了一个问题 我的Java应用程序在docker中运行 这意味着JVM在docker中运行 但我的jprofile安装在主机上 我知道 jprofiler 必须连接到 JVM 那么 jprofile
  • 如何在不设置完整路径的情况下访问 C++ 中的资源

    我希望在程序中访问我的资源 但我不想使用包括 C Users USER EXAMPLE 的完整路径 在 java 中 可以选择使用 getClass getResources Folder test txt 我想做的事情是读取和写入文件 而
  • 关闭 JSP 时调用操作

    我是java网络世界的新手 所以如果我说一些愚蠢的话请原谅我 我正在使用 struts 2 当 jsp 关闭时 我需要删除一个文件 位于服务器上 有谁知道该怎么做吗 提前致谢 The window onunload建议很好 但不能保证 aj
  • Excel 2007 VBA问题设置轴标题

    我需要帮助在 Excel 2007 VBA 中设置 X 轴和 Y 轴标题 它一直抱怨 需要对象 Sub macro2 Dim xAxis As Axis icount 1 Charts Add Charts icount Name iske
  • 从基类指针访问派生私有成员函数到派生对象[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我可以通过指向派生对象的基类指针访问派生私有成员函数 https stackoverflow com questions 3610936 why can i access a derived p
  • 如何设置IntelliJ IDEA项目SDK

    我刚刚安装了 IntelliJ IDEA 当我尝试创建我的第一个项目时 它要求我设置项目 SDK 当我单击 JDK 时 它要求我选择 JDK 的主目录 如下图所示 我无法找到它在哪里 对于新项目 选择 jdk 的主目录 eg C Java
  • 如何使用 tf2 为 seq2seq 构建自定义双向编码器?

    class Encoder tf keras Model def init self vocab size embedding dim enc units batch sz super Encoder self init self batc
  • 禁用 Android 幼儿应用程序中的主页按钮?

    我开发了一个应用程序 它是一个图片幻灯片放映 当您点击它们时 每个图片都会播放声音 这就像一本适合2 4岁孩子的图画书 问题是 由于 Android 不会让您捕获按下主页按钮并基本上禁用它 因此当父母将手机交给孩子与无人看管 勇敢的父母 一