是否可以在 android 中监控第三方应用程序意味着我想知道第三方应用程序的所有日志,例如应用程序 xyz 在星期四凌晨 2:30 访问联系人列表。
我们是否可以更改框架代码,就像任何应用程序在 sqlite 框架类上运行任何查询都会生成一个日志一样?我认为应该可以通过有根设备但不知道如何实现这一点。
LogCollector
安装 LOG COLLECTOR 应用程序
更改框架以了解谁访问了任何 contentProvider 的一种方法是更改
enforceReadPermission
并enforceWritePermission
在 ContentProvider.java 中记录调用 contentProvider 的包,
Log.d(TAG,""+getCallingPackages() +" app called provider "+ uri.getAuthority());
调用包函数
private Collection<String> getCallingPackages() {
int caller = Binder.getCallingUid();
if (caller == 0) {
return null;
}
return Lists.newArrayList(mContext.getPackageManager().getPackagesForUid(caller));
}
这可能看起来很明显,但我还是会说。您可以在 Eclipse 的 LogCat 中读取任何应用程序的日志。
如果您知道应用程序名称,并且它实际上会创建日志(即启用日志),您可以过滤它们以查看特定于该应用程序的日志。
我们是否可以更改框架代码,就像任何应用程序在 sqlite 框架类上运行任何查询都会生成一个日志一样?
通过 fork Android 添加您的更改,创建您自己的包含您的 fork 的 Android 副本的 ROM mod,并在您的设备上安装该 ROM mod。
我认为应该可以通过有根设备
充其量,您可以跳过“创建自己的 ROM 模块”步骤并尝试将修改后的框架 JAR 复制到您的根设备中。但是,如果该框架 JAR 与您的操作系统的其余部分不相符,则各种事情可能无法正常工作。这就是为什么唯一安全的方法是通过完整的 ROM 模块。
也许你可以为android实现一个aop框架......