Android 服务 AIDL 数据类型

标签 android service types aidl

我在系统应用程序中有一个服务。我希望没有系统权限的客户端应用程序能够调用服务中的函数来执行需要系统权限的操作。由于服务位于其自己的应用程序中,因此我使用 AIDL 为服务和客户端应用程序之间的 IPC 定义接口(interface)。

我希望制作客户端应用程序的人能够编写自己需要系统权限的代码,并向我提供要包含在我的服务中的代码。因此,我的服务将收到一个通用请求,指示将请求传递到何处以及请求本身。

由于我不知道客户端需要将哪些数据传入/传出到他们自己的代码中,所以我想使用通用接口(interface)来处理他们可能需要的任何类型的数据。我是否需要为每种数据类型向 AIDL 接口(interface)添加一个函数:

void doStuff(in String inStr, out String outStr);
void doStuff(in int inInt, out int outInt);

等等...

制作我自己的可打包对象会更好吗?使用 AIDL 处理此问题的最佳方法是什么?

最佳答案

您的问题分为两部分:

a.) 服务(指示将请求传递到何处):

您可以获取调用者 UID,然后将其用作作业/请求指示符。

b) AIDL 类型:

默认情况下,AIDL 支持以下数据类型:

1.) Java 编程语言中的所有基本类型(例如 int、long、char、boolean 等) 2.) 字符串 3.) 字符序列 4.) 列表

如果您有任何其他对象,那么您需要创建自己的可分割对象。

关于Android 服务 AIDL 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328494/

相关文章:

java - 类型安全: Unchecked cast in generic class

Android 模拟器没有响应

java - http OAuth 请求

android - 在 opencv android 中用于眼球的 haar 级联

Symfony 2 注入(inject)记录器服务

java - Spring:如何在输入@AfterReturning建议之前提交事务

android - AWS Android SDK 元数据支持问题

Android Websocket 服务持久连接

C++ 相互递归变体类型

java - 泛型方法中类类型参数的使用