问题标签 [android-screen-pinning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android Kiosk 模式 - 防止用户“未经授权”取消固定应用程序
我对 android 很陌生,我目前正在开发一个应该在 KioskMode 下运行的 Android 应用程序,这样普通用户就不能退出应用程序或在它之外做任何事情。
我已经做了什么:
- 我将我的应用设置为设备所有者
- 我在 MainActivity 的 onCreate() 方法中“屏幕固定”应用程序作为设备所有者
- 我在 MainActivity 中有一个按钮,稍后允许管理员通过输入密码退出。调用 stopLockTask()
我现在遇到的问题是,任何用户都可以通过同时长按“返回”和“多任务”按钮来退出屏幕固定,因为应该运行应用程序的平板电脑有硬件按钮,我不能简单地停用这些按钮。(至少我不知道如何在不生根设备的情况下做到这一点)
那么有没有办法停用这个按钮组合以退出屏幕固定,或者一些巧妙的解决方法?我想到的一种方法是在 onLockTaskModeExiting() 的 AdminReceiver 类中重新固定应用程序,但我仍然坚持如何做到这一点。
以下是我的 MainActivity 和 AdminReceiver 类的一些代码片段:
AdminReceiver.java
}
MainActivity.java
非常感谢任何帮助。谢谢!
android - Screen pinning as device owner not working
I'm trying to build a kiosk app using android 5's screen pinning feature. It seems that all I need to do in the app was to call startLockTask()
, but this still allows the user to leave the app by pressing the recent and back buttons.
To pin the app in a way that does not allow the user to leave it requires the app to be a device owner. Based on sites such as this one, one needs to run
in order to set the device owner. However, that command failed with
which, I heard, is caused by the file /data/system/device_owner.xml
already being present on the device.
Since the device had just been freshly factory-reset, I suspect that it had come with an app already provisioned by the manufacturer, so I rooted the device. I would rather do it without rooting (since there will be some 70 devices I have to run the procedure on) but for research purposes, it can't be helped.
After rooting the device, I tried to find the device_owner.xml
file but it wasn't there. I tried creating one anyway based on this answer, but the app still shows the pinning message and the recent+back buttons still unpinned the app.
So why can't I set the device owner? is there any way around it?
android - 没有请求用户操作的 startLockTask()
我想在没有任何用户请求的情况下激活 startLockTask()。所以起初我阅读了这个设备管理 并创建了一个小的示例应用程序。结果,我的应用程序在设备管理员列表中,但是当我调用 startLockTask() 时,它仍然不在静默模式下执行。当我试图这样称呼它时:
我得到下一个例外:java.lang.SecurityException: Admin ComponentInfo{com.hssoft.deviceadmintest/com.hssoft.deviceadmintest.DeviceAdmin} does not own the device
所以我有设备管理员,但我不是设备所有者。我做错了什么,有人可以帮忙吗?这是我的完整应用程序代码:
清单文件:
xml/device_admin.xml:
DeviceAdmin.java:
MainActivity.java:
android - 固定屏幕时更改状态栏颜色
当屏幕未固定时,我可以使用以下代码更改状态栏颜色。
当我通过startLockTask()固定屏幕后尝试相同时,状态栏颜色没有改变。怎么修?
android - 屏幕固定不可靠:有时在唤醒时要求输入密码,有时会直接跳到固定的应用程序
(这个问题最初以稍微改变的形式发布在android 爱好者存根上)
我一直在尝试为我正在制作的调查应用程序将安卓平板电脑锁定在信息亭模式;为此,我使用了Screen Pinning lollipop 功能(启用密码)。我使用了以下代码
在大多数情况下,这工作“可靠”, - 如果应用程序被固定并且用户让设备屏幕超时(或按下电源/锁定按钮),设备将进入睡眠状态,下次他尝试唤醒设备(通过电源/锁定按钮)固定的应用程序将再次弹出视图(用户无需输入他显然不知道的密码)。- 另一方面,如果用户试图取消固定,他/她会看到锁定屏幕和密码。到现在为止还挺好。
但是有时(这让我很困惑)当用户尝试唤醒设备时,设备不会直接进入固定的应用程序,而是显示锁定屏幕并要求用户输入密码!
我不确定为什么行为不一致(即在唤醒时,它有时会要求输入密码,而其他时候会直接进入固定的应用程序)并且在任何地方都找不到这种行为的任何提及。任何输入将不胜感激!
谢谢!
android - 作为设备所有者的安全屏幕固定
我想为我的应用实施安全信息亭模式。由于 Android 5.1 因此可以使用屏幕固定。但是每次我开始固定屏幕时,我都会得到一个我不想要的对话框,并且可以通过按住返回和概览按钮来退出此信息亭模式。
因此,我发现这些行为无法通过将应用程序用作设备所有者来阻止。
现在我的问题是:
这个设备所有者到底是什么设备管理应用程序。我怎么理解?如果有人能用简单的话解释一下就好了。
第二个问题:
如何启用此功能并让我的应用程序以设备所有者的身份运行?
android - 从“屏幕固定”活动启动另一个活动
http://florent-dupont.blogspot.ro/2015/02/android-5-screen-pinning.html
从固定的应用程序中,您无法启动辅助应用程序,除非该应用程序具有相同的共享用户 ID(这意味着在 AndroidManifest.xml 中设置的 sharedUserIdis 并且该第二个应用程序使用相同的证书打包)。不允许启动其他应用程序的活动,这样做(通过使用 Context.startActivity())将被忽略。
我已经完成了上述两件事,但startActivity()
仍然被忽略。
来自https://developer.android.com/reference/android/R.attr.html#lockTaskMode:
如果在启动基于此活动的新任务时系统已处于 lockTask 模式,则该任务将启动或不启动,具体取决于此活动的包是否已列入白名单。
看起来我已经采取了必要的步骤来实现这一点。
有谁得到这个工作?
android - 在 Android Studio 屏幕录像机中标记光标单击/点击/双击
Android Screen Recorder 是捕获 Android 屏幕的好工具,但是当我们在 Android 手机/模拟器屏幕上导航应用程序时,有没有办法突出点击和点击?
android - Android 屏幕固定 - 应用更新
嗨,我开发了一个屏幕固定的 android 应用程序(使用管理员接收器)。我还进行了自动更新检查(我自己的服务器)。当有更新时,它会下载 APK 并开始安装它。
由于屏幕是屏幕固定的,因此我无法启动或查看安装屏幕,因此我可以单击安装按钮。
反正有这个吗?update 方法在屏幕未固定时起作用,但这会破坏我屏幕固定的对象。
谢谢
android - Android:如何让设备只运行一个应用程序?
我有一个客户项目,我必须在其中制作单任务 android 设备。客户无法逃脱我公司开发的应用程序。此外,客户无法启动任何其他应用程序,并且我们的应用程序在设备启动时启动。总体而言,客户能够使用该设备做的就是运行我们的应用程序。
除了生根设备,禁用所有系统按钮并使我们的应用程序成为启动器之外,还有其他方法可以使这项工作。为此,我有大约 400 台设备,因此将所有这些设备生根会花费大量时间。
我还阅读了谷歌关于 COSU 设备的教程,但发现它非常令人困惑https://developer.android.com/work/cosu.html#testing-plan
Androids 自己的屏幕固定不够好,因为客户可以逃避应用程序。有些人可能会建议使用像 SureLock 这样的信息亭应用程序,但我公司的目标是在不使用任何第三方应用程序的情况下找到明确的解决方案。通过一些信息亭应用程序运行我们的应用程序也不是我们的目标。
我在 Stack Overflow 上发现了一些类似问题的帖子,但不是我正在寻找的答案。
如果有人对这个问题有一些提示,我将不胜感激。