Binder de Android que borra la identidad del llamante

Recientemente he leído los códigos fuente de Android y encontrar que un par de métodos siempre se llaman al hacer alguna llamada Binder IPC. He leído el comentario, pero no puedo conocer claramente la razón raíz. El par de método es como sigue:

 final long origId = Binder.clearCallingIdentity(); //other local method. Binder.restoreCallingIdentity(origId); 

¿Alguien sabe cuál es la función de ese par de método? Parece referirse al permiso.

No creo que pueda responder mejor que la descripción en las API oficiales: http://developer.android.com/reference/android/os/Binder.html

public static final long clearCallingIdentity ()

Restablezca la identidad del IPC entrante en el subproceso actual. Esto puede ser útil si, al manejar una llamada entrante, va a llamar a interfaces de otros objetos que pueden ser locales a su proceso y necesita hacer verificaciones de permisos en las llamadas que entran en ellos (por lo que comprobarán el permiso de su propio Proceso local, y no cualquier proceso originalmente llamado usted).

Aunque la pregunta es antigua, vale la pena poner más detalles además de la descripción oficial del método.


Aparte de (o junto con) IPC el papel clave del marco Binder en Android es la seguridad.

Cada transacción Binder ejecuta bajo la identidad (PID y UID) del proceso llamante ( llamante ) para que el proceso llamado ( callee ) pueda inspeccionar los permisos del proceso llamante y decidir si se puede ejecutar el método solicitado.

Si tal transacción necesita ser (temporalmente) ejecutándose bajo la identidad de la persona que llama , la persona que llama puede ser borrada y restaurada más tarde con las llamadas a Binder.clearCallingIdentity() y Binder.restoreCallingIdentity(long) respectivamente. Entre las llamadas se verificará el permiso del receptor .

Como ejemplo, considere los servicios del sistema (ubicación AOSP: /frameworks/base/services/java/com/android/server ). Ejecutándose en el proceso system_server , UID=1000 , los servicios pueden borrar temporalmente la identidad de la persona que llama para pasar las comprobaciones de permisos.

  • Android Widgets permitido exceder el límite de transacción Binder de alguna manera?
  • Renombrar carpeta en la tarjeta SD
  • Ventajas de usar Binder para IPC en Android
  • ¿Existe alguna convención para el almacenamiento de tarjetas SD de Android?
  • Android: ¿Cómo abrir una carpeta específica a través de Intent y mostrar su contenido en un navegador de archivos?
  • Lista de nombres de carpetas de directorios de la tarjeta SD de Android
  • Donde está ADB, Android Debug Bridge, código fuente de los componentes ubicado en el proyecto de código abierto de Android
  • No tiene ningún directorio de librerías en Android Studio
  • Android: hacer una carpeta en la memoria externa privada o protegida
  • Cómo crear una carpeta en android External Storage Directory?
  • Tratando de guardar la imagen en una carpeta de imágenes determinada que no se ha creado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.