草庐IT

android - 使我的 Android 应用程序在启用时进入完全信息亭模式

coder 2023-12-15 原文

我正在尝试让我的反馈应用程序完全支持自助服务终端,我已经尝试了很多解决方案,但没有什么能完全满足我的需求。这是我找到的东西。

<强>1。将我的应用设为设备管理员/所有者应用(锁定任务)-

如果我们点击此链接/程序 https://developer.android.com/work/dpc/dedicated-devices/lock-task-mode , 一些限制如下 -

一个。我们必须将所有安装了反馈应用程序的设备恢复出厂设置,按照一些步骤将其设置为管理应用程序(启动器应用程序)。

可以使用命令行安装该应用程序,每次安装都会通过 cmd 获取一些代码行,这意味着安装人员必须带着电脑去那里,用 USB 连接设备,然后使用命令安装应用程序。

应用程序的更新也将遵循相同的程序(无法使用 google play 商店执行)

在这种情况下,最终用户将永远无法退出我们的应用程序,每次重启设备也会启动相同的反馈应用程序。

<强>2。以编程方式固定屏幕 + 以编程方式控制音量和电源按钮。 ( https://github.com/mrugacz95/kiosk )

一个。在此,我们将使应用程序处于屏幕固定模式,其中所有三个底部按钮(概览、主页、最近)都将被隐藏/禁用。与电源键和音量键相同。

因此,只要用户点击 kiosk 模式,就会向用户显示屏幕固定系统生成的提示,但它最大的缺点是,一旦用户同时按下概览+最近按钮,应用程序就会被取消固定/解锁。

<强>3。第三种情况是,控制所有按键,包括电源+音量+返回+概览等。 只有按下主页才会使应用程序进入后台,几秒钟后它将再次出现在前台。

到目前为止,我发现的一切都不是很令人满意。 还有一个问题-

这是要完全由 MDM(移动设备管理)控制的东西吗?

感谢任何帮助。

最佳答案

<强>1。将我的应用设为设备管理员/所有者应用

一个。设备所有者只能安装在新初始化的设备上(在添加帐户之前)。我相信这是设计使然:设备所有者可以完全锁定设备,您不希望恶意应用能够在几次“我同意”弹出窗口后夺取毫无戒心的用户的电话。

您不需要使用 adb 安装它。最简单的配置方法是通过 NFC :当设备显示设置向导的第一个屏幕时,用包含配置配置的标签(或其他设备)触摸它,最重要的是可以下载 apk 的 URL 和 WiFi 配置。

另一种方法是通过 QR code (Android 7+) :在第一个设置屏幕上点击 6 次。它不如 NFC 方便,因为您通常必须手动配置 WiFi。

设备所有者可以像任何其他应用程序一样进行更新。因为它本身可以install or update applications无需询问用户,您就可以实现完全自动化的自更新机制:检查更新/下载/更新。

<强>2。锁定任务/固定屏幕

任何应用程序都可以编程enter lock task mode .它如何发生取决于应用程序是否被设备所有者应用程序(可能是它自己)列入白名单:

如果没有,会提示用户必须接受,也可以随时退出。这基本上与屏幕固定相同。

如果是,则没有弹出窗口:用户不能拒绝进入或退出锁定任务模式。

此外,信息亭应用程序可以充当启动器。设备所有者(同样,可能是它自己)可以 set it without user intervention

这是要完全由 MDM(移动设备管理)控制的东西吗?

虽然设备所有者应用通常通过 DPC 连接到某种 MDM 控制台,但这不是技术要求。你如何控制它完全取决于你。 (我希望我正确理解了这个问题)

总的来说,我认为将设备锁定在 kiosk 模式下的唯一可靠方法是使用设备所有者应用程序(单独或包含在 kiosk 应用程序中)。通过 NFC 或二维码进行设置实际上比普通设备设置更快。它还可以防止安全模式重启或恢复出厂设置。唯一真正的限制是你不能在现有设备上部署这种应用程序而不先删除它们。

关于android - 使我的 Android 应用程序在启用时进入完全信息亭模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56766782/

有关android - 使我的 Android 应用程序在启用时进入完全信息亭模式的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  8. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  9. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  10. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

随机推荐