Android 有没有办法获取IBinder实例的UID或PID?
我需要对通过IPC从其他进程携带的Android 有没有办法获取IBinder实例的UID或PID?,android,ipc,android-binder,Android,Ipc,Android Binder,我需要对通过IPC从其他进程携带的IBinder实例进行安全检查。这个IBinder的创建者/接收者可能不是携带它的IPC的直接调用者,因此我不能简单地使用Binder.getCallingUid() 如何检测特定IBinder实例的UID或PID?我认为您必须为给定UID在IPC状态下插入一个钩子,并将其从复制发送到用户函数 您想从哪里获取呼叫者的UID或PID?注意,您正在获取活动绑定事务调用方的UID或PID(因此必须在onTransact方法内完成)@pskink IBinder实例不一
IBinder
实例进行安全检查。这个IBinder
的创建者/接收者可能不是携带它的IPC的直接调用者,因此我不能简单地使用Binder.getCallingUid()
如何检测特定
IBinder
实例的UID或PID?我认为您必须为给定UID在IPC状态下插入一个钩子,并将其从复制发送到用户函数 您想从哪里获取呼叫者的UID或PID?注意,您正在获取活动绑定事务调用方的UID或PID(因此必须在onTransact
方法内完成)@pskink IBinder实例不一定由调用方所有。它可能通过先前的IPC从另一个进程进行。您想从何处获取pid或uid?@pskink“我的活动”或“服务”中的代码。好的,您在何处创建活页夹
?您的Binder
具有onTransact
方法,它是您应该调用getCallingPid
/getCallingUid的地方,
然后您可以将Binder
传递给某个不同的进程A
,流程A
可以调用transact
方法或将活页夹
传递给流程B
,Binder
传递可以多次进行,但最后为了使用Binder
必须使用transact
方法,调用onTransact
方法时,将在可以获取调用方pid/uid的位置执行该方法