Android的粘结剂结算方身份(Android Binder clearing caller id

2019-08-31 05:24发布

最近我读到Android源代码,发现一对方法往往被称之为做一些当Binder IPC调用。 我读了评论,但我不能清楚的知道的根本原因。 该对方法的是如下:

final long origId = Binder.clearCallingIdentity();

//other local method.

Binder.restoreCallingIdentity(origId);

没有人知道那是什么对法的功能? 这似乎涉及到权限。

Answer 1:

我不认为我能回答比官方的API的说明更好: http://developer.android.com/reference/android/os/Binder.html

public static final long clearCallingIdentity ()

重置当前线程传入的IPC的身份。 如果,在处理来电,您将在可能是本地的过程,需要做进入他们的调用权限检查(所以他们会检查自己的许可,其他对象的接口调用这可能是有用本地进程,并没有任何的过程原来叫你)。



Answer 2:

虽然问题是旧的,它的价值将更多的细节,除了官方的方法介绍。


除了(或沿)IPC的关键作用, Binder在框架Android的安全性。

每一个Binder事务中的身份调用进程(PID和UID)( 主叫 )运行,这样所谓的过程( 被调用者 )可以检查调用进程的权限,并决定是否可以执行请求的方法。

如果这样的交易必须根据被叫方的身份(临时)运行, 调用者的一个可以被清除后来与调用恢复Binder.clearCallingIdentity()Binder.restoreCallingIdentity(long)分别。 在调用之间的被叫方的权限将被检查。

例如 ,考虑的系统服务(AOSP位置: /frameworks/base/services/java/com/android/server )。 运行在system_server过程中, UID=1000 ,该服务能够以通过权限检查暂时清除来电者的身份。



文章来源: Android Binder clearing caller identity