我被分配做了一个项目,我应该在其中编写一个Android应用程序,以拦截在框架中传递的所有通信Intent。事实上,我想拦截包括所有IPC在内的所有ICC(组件间通信)。
AFAIK,下面列出了Android中ICC的两种常用方法。
为了完成这个项目,我应该操纵Android框架来挂钩一些特定的模块吗? (虽然我不这样做)。
我更感兴趣的是创建一个应用程序来拦截所有ICC 而不用操纵框架。它有可能吗?
如果我应该触摸框架,请告诉我将处理所有ICC /组件?
答案 0 :(得分:0)
我应该操纵Android框架来挂钩一些特定的模块吗?
是。由于Linux内核的进程防沙功能,您的应用无法访问其他应用的信息或其中发生的事情。
我更感兴趣的是在不操纵框架的情况下创建一个拦截所有ICC的应用程序。它有可能吗?
绝对没有。
如果我应该触摸框架,请告诉我将处理所有ICC /组件?
为拦截所有ICC,包括启动活动,启动服务,绑定服务和发送广播,您可以操纵Activity Manager服务。
每当您的应用中,您拨打startActivity()
(及其所有风味,例如startActivityForResult()
),sendBroadcast()
,startService
和bindService
(其中两者都是RPC并使用Messenger),将采取以下步骤。 (引擎盖后面!)
Service Manager
。Service Manager
就像注册系统服务的索引。因此,它会通过Binder机制向您的应用返回Activity Manager
的句柄。您的应用现在调用刚刚获得的Activity Manager
实例上指定的方法。
在Activity Manager
中将采取进一步的步骤,例如:意图解析(通过resolveIntent()
的{{1}}方法)以及权限检查。
您的案例有两种选择:
Package Manager
个代码。Activity Manager
的代理,并将其注册到Activity Manager
。的 Service Manager
强>