`

Android的IBinder介面及其安全性机制(转)

    博客分类:
  • AIDL
阅读更多
Activity物件与Service物件在不同的进程(Process)里执行,各有不同的UID(Unix user ID)。由於各自独立执行,所以Activity物件通常依赖Intent物件去请求Android启动所需要的Service。

  就Service物件的开发者而言,Activity物件是属於外界(因为两者在不同的进程里执行)的软体,也大多是别人开发的。那麼,Service物件如何确定这外来的物件是善意的呢? 这就是安全性的问题了。在Service类别里,可以做权限的检查,其常用指令如下图:


當Service確認了對方的善意,就將IBinder介面的參考(Reference)傳給Activity物件。Activity物件就能透過IBinder介面去使用Binder的服務了。如下圖:

當Activity呼叫IBinder的transact()等函數時,會反向呼叫NotifyBinder子類別的onTransact()函數。此時,也可以進行安全檢驗,例如下圖裡的指令:

int uid = Binder.getCallingUID();

  就能取得對方UID來檢驗它的身分等。還可以進行checkCallingPermission()等檢驗。如下圖:

經檢驗而確認來客是善意的,就啟動BinderServer(如影音播放器)來提供實質的服務。

  以上是就Service的開發者角度來看Android的IBinder的安全機制的有關概念。至於Android範例程式碼,在此節錄文章裡,就省略了。

http://android.tgbus.com/Android/tutorial/200812/171437.shtml
分享到:
评论

相关推荐

    android 13.Android的IBinder接口及其安全性机制

    ### Android 13 的 IBinder 接口及其安全性机制 #### IBinder 接口简介 在 Android 开发中,为了实现跨进程通信(IPC),Android 提供了一个核心接口——`IBinder`。这个接口允许不同进程中的应用组件(如 ...

    android的IBinder简单使用

    在Android系统中,IPC(Inter-...总之,Android的IBinder机制是实现高效、安全的进程间通信的关键。通过理解并正确使用IBinder及其核心方法,开发者可以构建出强大的跨进程服务,实现应用程序组件之间的深度交互。

    Android IBinder

    这是一个安全性问题。在 Service 类中,可以进行权限检查,以确保来自外部的对象是可靠的。 IBinder 是 Android 中的一个接口,它提供了 Binder 服务的接口。Binder 是 Android 中的一个重要组件,用于实现进程间...

    Android IBinder.pdf

    ### Android IBinder机制详解 #### 一、引言 在Android系统中,进程间通信(Inter-Process Communication,简称IPC)是一项重要的技术,它允许不同的应用程序和服务之间进行数据交换和功能调用。其中,`IBinder`是...

    台湾高焕堂Android讲义

    13.Android的IBinder接口及其安全性机制.doc 14.Activity之间的Inter-process沟通.doc 15.从应用框架角度看ListView与Adapter类别.doc 16.善于设计自己的Listener来进行沟通.doc 17.如何使用SurfaceView计时绘点或线...

    高焕堂关于Android讲义

    13.Android的IBinder接口及其安全性机制 14.Activity之间的Inter-process沟通 15.从应用框架角度看ListView与Adapter类别 16.善于设计自己的Listener来进行沟通 17.如何使用SurfaceView计时绘点或线 18.从...

    深刻解析 Android 的 AIDL 介面

    总的来说,AIDL是Android系统中实现跨进程通信的一种重要机制,它使得Java应用能够透明地调用运行在不同进程中的服务,极大地扩展了Android应用的灵活性和可扩展性。通过理解AIDL的工作原理,开发者可以更好地设计和...

    android通信机制binder实例

    与其他IPC机制相比,Binder具有更低的开销,支持对象的远程调用,并且具备良好的安全性。Binder机制由服务端、客户端、以及一个中间代理——Binder驱动共同构成。 二、Binder组件 1. 服务端:通常是一个运行在其他...

    AndroidBinder机制总结[归纳].pdf

    - 安全性:Binder机制提供了权限控制,确保只有授权的进程才能访问特定服务。 - 效率:由于Binder机制在内核层进行数据复制,减少了不必要的上下文切换,提升了性能。 - 异步通信:Binder支持同步和异步调用,能...

    Android进程间通信-Binder机制详解

    - **安全性**:Binder机制允许系统控制权限,只允许授权的进程访问服务,增强了系统的安全性和稳定性。 - **组件化**:Binder支持跨进程的组件通信,有利于实现组件的解耦和复用。 了解Binder机制对于Android开发至...

    E04_HAL觀點_ServiceManager和IBinder扮演的角色_android.doc

    - IBinder是Android系统中进行进程间通信的主要机制。它是服务之间交互的桥梁,允许不同进程间的对象调用方法。 - 完成启动后,无论是C++层还是Java层的客户端模块都可以通过绑定(Bind)、连接(Connect)和调用...

    Android远程服务机制剖析.pdf

    此外,还需要关注服务的安全性,防止恶意应用程序滥用服务。 总结来说,Android远程服务机制是解决多进程间通信的有效途径,尤其适用于后台任务和组件间协作的场景。理解并熟练运用这一机制,可以提升Android应用的...

    Android深入浅出之Binder机制

    - **安全性**:提供了安全的身份验证和权限控制机制。 #### 三、关键概念解析 1. **Binder**:一个实现了IBinder接口的对象,用于表示一个可以被远程访问的对象。 2. **IBinder**:Binder的基本接口,定义了Binder...

    Android Service IPC通信之Messenger机制

    当服务需要与其他应用组件或进程进行跨进程通信(IPC,Inter-Process Communication)时,Android提供了多种机制,其中一种就是Messenger。本文将深入探讨Android Service中的IPC通信机制——Messenger。 Messenger...

    Android平台——Binder机制

    - **重要性**:由于每个进程只能有一个`ProcessState`对象,这意味着所有Binder操作都将通过该对象进行,确保了进程间的通信安全性和效率。 #### 2. ServiceManager对象 ```cpp sp<IServiceManager>sm=...

Global site tag (gtag.js) - Google Analytics