2

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

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

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

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

ETC...

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

4

1 回答 1

2

你的问题有两个部分:

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

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

b) AIDL 类型:

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

1.) Java 编程语言中的所有原始类型(例如 int、long、char、boolean 等) 2.) String 3.) CharSequence 4.) List

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

于 2013-01-17T19:45:11.600 回答