这远不是平凡的,但是当您想要监视的应用程序使用sqlite数据库或更通用的方式在文件到达时向其发送消息,但应该起作用.

您确实需要对设备进行root访问,因为这违反了android安全系统:

编写一个本地进程,以NDK作为守护进程运行,并以root身份启动后生成一次.你现在有三个主要问题要解决:

如何发现有什么变化?

这是简单的部分.您将需要使用linux inotify接口,应该可以在每个Android手机上访问,因为SDK自API 1以来有一个FileObserver,所以你在这里保存.

另一个有趣的事情可能是抓住C2DM消息.我发现一个NDK类叫做BroadcastReceiver,所以NDK可以抓住他们.但我个人不会这样做,窃取意图感觉错了.此外,您也必须重新分配或让他们前往真实的收件人,所以我不会在这里详细描述.它可能会起作用,但可能更难,只能是回退.

所以,当你解决了这个问题,下一个问题出现了:

如何以保存的方式读取更改?

你有一个问题,一个大的,在这里.该文件不属于您,您甚至没有权利知道它在哪里(通常).所以被监控的应用程序不知道你,并且将像文件完全拥有它.如果他们使用一些普通的旧文本文件来写消息,你必须找出一种安全的方式,因为它可能被覆盖或扩展.但是,根据this的说法,当使用sqlite时,你可能会很幸运,只有一个作者只有一个以上的读写器是完全有效的.我们在规格,一切都好了.当你现在读出新的数据,更多的问题要解决:

如何获取新的数据回到主应用程序?

你应该只在这个c / c程序中的最低限度,因为它以root身份运行.您还应该保护您的应用程序用户免受安全漏洞的侵害,因此请记住这个守则程序.我没有真正的想法,这可以工作真的很好,但这里有一些:

>将收集的数据写入您自己的sqlite数据库(容易在c / c和java中)

>将收集的数据写入普通文件(完全不推荐,后方疼痛)

>发送一个包含新数据的意图(可能不是那么容易在c / c,但容易在java中)

>套接字/管道/ …,只是你可以想象的每一个rpc机制,由linux提供给你(与文件相同,不要这样做)

如上文中所述,当您编写此守护程序时,请注意,因为它具有潜在的安全隐患.当您对c / c知之甚少时,也可能很难做到这一点,甚至当您编写简单的程序时,这应该是一件非常简单的任务.

在我通过网络进行搜索时,我发现了我上面提到的这个NDK c类.它可以在google code找到.我没有NDK的经验,也没有c包装,但是当你打算写这个时可能值得一看.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐