我有一个课程延伸android.os.Handler.该处理程序的一个实例被传递给a的构造函数Messenger.该Messenger的IBinder距离getBinder作为的结果,通过onBind我的服务事件.通过绑定程序从远程应用程序发送的消息确实转到处理程序的handleMessage方法,但是对内部Binder.getCallingUid和Binder.getCallingPid内部的调用handleMessage始终返回服务进程的uid和pid(这绝对不是与远程应用程序相同的进程).handleMessage绝对是IPC交易的一部分,不是吗?那么我哪里出错了?我需要这个来处理连接应用程序的身份验证.
提前致谢.
编辑
好.我有这种可怕的感觉,handleMessage它不是IPC事务的一部分,因为它发生在AIDL的单独线程中,它将消息放入队列中Messenger.有没有其他方法来获取呼叫者的用户ID和进程ID?
创建一个自定义Handler类并覆盖sendMessageAtTime(这是该类中唯一可覆盖的发布方法Handler),然后使用它来创建一个Messenger返回的onBind.
在该sendMessageAtTime方法中,您可以通过getCallingPid和获取调用远程应用程序的pid/uid getCallingUid.
但是,在使用IPC时Messenger,与使用AIDL相反,getCallingPid将始终返回0,因为远程应用程序发送的消息是异步的; 与...交易IBinder.FLAG_ONEWAY.因此,uid是唯一可用的信息.
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |