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 的 IBinder 接口及其安全性机制 #### IBinder 接口简介 在 Android 开发中,为了实现跨进程通信(IPC),Android 提供了一个核心接口——`IBinder`。这个接口允许不同进程中的应用组件(如 ...
在Android系统中,IPC(Inter-...总之,Android的IBinder机制是实现高效、安全的进程间通信的关键。通过理解并正确使用IBinder及其核心方法,开发者可以构建出强大的跨进程服务,实现应用程序组件之间的深度交互。
这是一个安全性问题。在 Service 类中,可以进行权限检查,以确保来自外部的对象是可靠的。 IBinder 是 Android 中的一个接口,它提供了 Binder 服务的接口。Binder 是 Android 中的一个重要组件,用于实现进程间...
### Android IBinder机制详解 #### 一、引言 在Android系统中,进程间通信(Inter-Process Communication,简称IPC)是一项重要的技术,它允许不同的应用程序和服务之间进行数据交换和功能调用。其中,`IBinder`是...
13.Android的IBinder接口及其安全性机制.doc 14.Activity之间的Inter-process沟通.doc 15.从应用框架角度看ListView与Adapter类别.doc 16.善于设计自己的Listener来进行沟通.doc 17.如何使用SurfaceView计时绘点或线...
13.Android的IBinder接口及其安全性机制 14.Activity之间的Inter-process沟通 15.从应用框架角度看ListView与Adapter类别 16.善于设计自己的Listener来进行沟通 17.如何使用SurfaceView计时绘点或线 18.从...
总的来说,AIDL是Android系统中实现跨进程通信的一种重要机制,它使得Java应用能够透明地调用运行在不同进程中的服务,极大地扩展了Android应用的灵活性和可扩展性。通过理解AIDL的工作原理,开发者可以更好地设计和...
与其他IPC机制相比,Binder具有更低的开销,支持对象的远程调用,并且具备良好的安全性。Binder机制由服务端、客户端、以及一个中间代理——Binder驱动共同构成。 二、Binder组件 1. 服务端:通常是一个运行在其他...
- 安全性:Binder机制提供了权限控制,确保只有授权的进程才能访问特定服务。 - 效率:由于Binder机制在内核层进行数据复制,减少了不必要的上下文切换,提升了性能。 - 异步通信:Binder支持同步和异步调用,能...
- **安全性**:Binder机制允许系统控制权限,只允许授权的进程访问服务,增强了系统的安全性和稳定性。 - **组件化**:Binder支持跨进程的组件通信,有利于实现组件的解耦和复用。 了解Binder机制对于Android开发至...
- IBinder是Android系统中进行进程间通信的主要机制。它是服务之间交互的桥梁,允许不同进程间的对象调用方法。 - 完成启动后,无论是C++层还是Java层的客户端模块都可以通过绑定(Bind)、连接(Connect)和调用...
此外,还需要关注服务的安全性,防止恶意应用程序滥用服务。 总结来说,Android远程服务机制是解决多进程间通信的有效途径,尤其适用于后台任务和组件间协作的场景。理解并熟练运用这一机制,可以提升Android应用的...
- **安全性**:提供了安全的身份验证和权限控制机制。 #### 三、关键概念解析 1. **Binder**:一个实现了IBinder接口的对象,用于表示一个可以被远程访问的对象。 2. **IBinder**:Binder的基本接口,定义了Binder...
当服务需要与其他应用组件或进程进行跨进程通信(IPC,Inter-Process Communication)时,Android提供了多种机制,其中一种就是Messenger。本文将深入探讨Android Service中的IPC通信机制——Messenger。 Messenger...
- **重要性**:由于每个进程只能有一个`ProcessState`对象,这意味着所有Binder操作都将通过该对象进行,确保了进程间的通信安全性和效率。 #### 2. ServiceManager对象 ```cpp sp<IServiceManager>sm=...