我正在为Android制作家长控制/问责制应用程序。它由一项在后台运行并在启动手机时启动的监视服务组成。

,不幸的是,我发现以“安全模式”启动android时,服务不会自动启动,并且因此,我的应用程序存在严重缺陷。

在安全模式下,可以在不运行我的监视服务的情况下启动Web和其他应用程序。

我认为如果无法在安全模式下监视应用程序活动,也许我至少可以让我的应用程序检测手机之前是否处于安全模式。然后它可能会警告父母或责任合伙人?

Android会对此保留任何日志吗?还是一般的任何启动日志?我非常乐意提出建议和替代方案。

评论

我非常希望没有办法。

我认为这不应该关闭。开发人员并不是唯一对此感兴趣的人。

我同意@Richard。这不是专门的编码问题,而是有关Android工作方式的信息。

#1 楼

我认为您已经陷入困境,总之,您无能为力!
看看此源,解释了原因,特别是在本节中:
系统分区和安全模式/>系统分区包含Android的内核以及
操作系统库,应用程序运行时,应用程序
框架和应用程序。该分区设置为只读。当用户
将设备引导到安全模式时,只有核心Android应用程序可用。这样可以确保用户可以将手机启动到没有第三方软件的环境中。

关键字没有第三方软件的环境
编辑:
Android启动时,会在logcat中保留的临时缓冲区中保留/dev/log的缓存。该缓冲区在达到阈值时会被回收,显然,阈值越大,Android越慢,而不断向垃圾猫缓冲区发送垃圾邮件,因此将其保持在最低水平-iirc,约64K:
#define DEFAULT_LOG_ROTATE_SIZE_KBYTES 16
#define DEFAULT_MAX_ROTATED_LOGS 4
system/core/logcat/logcat.cpp
不要问每个应用程序可以有多少行不同。不仅如此,logcat在重新启动后也会消失!

评论


您没有真正回答您只是重申了他所知道的问题,即他的应用无法在安全模式下进行监控的问题。添加有关安全模式日志或替代方法的信息,然后+1

–花生
2012年7月18日在20:21



@ Peanut,Android仍然会记录logcat,但只有核心服务,别无其他!别无选择!而且第三方应用程序无法识别已激活安全模式,因为下次退出安全模式(即正常重启)时,第三方应用程序“认为”没有发生任何事情,就像“没什么可看的...”向前走”

–t0mm13b
2012年7月18日在20:22



抱歉,我在看到您的评论之前先编辑了我的评论,但是正如我所说的,您并没有真正回答他的问题。因此,另一种选择是检查logcat是否在其应用未运行时运行?显然,这将需要该人在某个时候不在安全模式下启动它,但这至少是一个现实的解决方案。

–花生
2012年7月18日在20:25

重启后,logcat的内容...会刷新到/ dev / null,就像“照常营业” ...只是说.. :)谢谢你的不赞成!

–t0mm13b
2012年7月18日在20:28



啊,我没有意识到,^^我会投票,因为您在这里提供了他的问题的答案:)我想您应该将有关日志的内容添加到您的实际答案中。编辑:哦,直到您编辑答案,我才能真正投票:p

–花生
2012年7月18日在20:32



#2 楼

不是最好的答案,但是也许这些信息会有用。

我知道的唯一方法是重新启动后包含系统生成的日志,方法是/proc/last_kmsg

内核是否在重新启动后保留此日志文件,取决于内核编译期间提供的设置。

我的经验表明,某些备用设备(HTC)启用了此日志记录,而另一些则没有。我没有看到一致的模式。

评论


谢谢!您从哪里了解此日志?您对我如何了解更多这些日志有任何建议吗?那里有参考吗?

–ferm10n
2012年8月10日上午11:53

万一有人像我一样徘徊,日志现在在/ sys / fs / pstore / console_ramoops中。它不是像dmesg那样的完整日志,但基本上只包含有关最后一次内核崩溃以及导致它的原因的信息。

–埃文·朗格卢瓦(Evan Langlois)
17年8月1日在11:41

adb shell cp / sys / fs / pstore / console-ramoops /data/media/0/console-ramoops.`date“ +%Y_%m_%d_%H_%M_%S” .log在OP3上与TWRP一起使用基于Android 8的LineageOS

– beppe9000
19年6月30日在17:38