3

是否可以在 android 中监控第三方应用程序意味着我想知道第三方应用程序的所有日志,例如应用程序 xyz 在星期四凌晨 2:30 访问联系人列表。

我们是否可以更改框架代码,就像任何应用程序在 sqlite 框架类上运行任何查询都会生成一个日志一样?我认为应该可以通过有根设备但不知道如何实现这一点。

4

5 回答 5

4

LogCollector安装 LOG COLLECTOR 应用程序

于 2012-09-06T12:11:53.063 回答
4

更改框架以了解谁访问了任何 contentProvider 的一种方法是更改

enforceReadPermissionenforceWritePermission在 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));
 }
于 2012-09-16T09:34:33.637 回答
2

这可能看起来很明显,但我还是会说。您可以在 Eclipse 的 LogCat 中读取任何应用程序的日志。

如果您知道应用程序名称,并且它实际上会创建日志(即启用日志),您可以过滤它们以查看特定于该应用程序的日志。

于 2012-09-06T12:16:17.480 回答
2

我们是否可以更改框架代码,就像任何应用程序在 sqlite 框架类上运行任何查询都会生成一个日志一样?

通过 fork Android 添加您的更改,创建您自己的包含您的 fork 的 Android 副本的 ROM mod,并在您的设备上安装该 ROM mod。

我认为应该可以通过有根设备

充其量,您可以跳过“创建自己的 ROM 模块”步骤并尝试将修改后的框架 JAR 复制到您的根设备中。但是,如果该框架 JAR 与您的操作系统的其余部分不相符,则各种事情可能无法正常工作。这就是为什么唯一安全的方法是通过完整的 ROM 模块。

于 2012-09-17T17:03:30.380 回答
1

也许你可以为android实现一个aop框架......

于 2012-09-16T02:16:23.297 回答