在Jelly Bean设备上读取ActivityManager -log?

时间:2012-07-06 23:47:15

标签: android security android-activity android-logcat

Jelly Bean已经删除了读取其他应用程序日志的功能(根据this I / O通话),这是一个明智的安全改进。但是,我需要阅读ActivityManager - 我的应用程序的日志才能工作(查看当前正在启动的应用程序)。为此,我正在使用

private static final String clearLogcat = "logcat -c";
private static final String logcatCommand = "logcat ActivityManager:I *:S";
//...

不再有效,因为我只能在Jelly Bean中读取我自己的应用程序日志。是否有其他解决方案可以找出其他应用何时启动(除了root)?我理解为什么我们不应该能够读取其他应用程序的日志(有点 - 应该是其他开发人员的确定不会记录任何个人信息的责任,而不是通过阻止阅读日志来记录我的),但我不明白为什么ActivityManager,一个框架类,包含在该政策中......

谢谢,
尼克

2 个答案:

答案 0 :(得分:7)

here对此问题进行了广泛的讨论。不幸的是,它是“预期的行为”,因此不会被修复。唯一的当前解决方案(用于从JB及以上的应用程序中读取日志)是通过adb手动授予应用程序的权限:

adb shell pm grant <pkg> android.permission.READ_LOGS

授予此类许可:

  • 幸存重启
  • 幸存应用程序更新(即“adb install -r”)
  • 如果卸载并安装了应用程序,
  • 将无法生存 再次

很明显,这不是普通用户可以做的事情。 Android团队承诺提供GUI解决方案(用户可以从其设备的Settings菜单授予此权限),但遗憾的是,在“修复”实施之前,该功能已被删除。

答案 1 :(得分:0)

首先,ActivityManager不是应用程序......它是构成Android应用程序框架一部分的类。

其次,如果Android团队故意竭力阻止这种情况发生,那么我怀疑它周围是否存在安全漏洞。事实上,第三方应用程序不应该依赖logcat日志才能正常工作。如果您提供有关需要阅读这些日志的原因的详细信息,我们可以帮助您找到更好的解决方案。