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
,一个框架类,包含在该政策中......
谢谢,
尼克
答案 0 :(得分:7)
here对此问题进行了广泛的讨论。不幸的是,它是“预期的行为”,因此不会被修复。唯一的当前解决方案(用于从JB及以上的应用程序中读取日志)是通过adb手动授予应用程序的权限:
adb shell pm grant <pkg> android.permission.READ_LOGS
授予此类许可:
很明显,这不是普通用户可以做的事情。 Android团队承诺提供GUI解决方案(用户可以从其设备的Settings
菜单授予此权限),但遗憾的是,在“修复”实施之前,该功能已被删除。
答案 1 :(得分:0)
首先,ActivityManager
不是应用程序......它是构成Android应用程序框架一部分的类。
其次,如果Android团队故意竭力阻止这种情况发生,那么我怀疑它周围是否存在安全漏洞。事实上,第三方应用程序不应该依赖logcat日志才能正常工作。如果您提供有关需要阅读这些日志的原因的详细信息,我们可以帮助您找到更好的解决方案。