【问题标题】:Android service AIDL data typesAndroid 服务 AIDL 数据类型
【发布时间】:2013-01-14 23:09:07
【问题描述】:

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

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

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

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

等等……

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

【问题讨论】:

    标签: android service types aidl


    【解决方案1】:

    您的问题分为两部分:

    a.) 服务(指示将请求传递到哪里):

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

    b) AIDL 类型:

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

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

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

    【讨论】:

    • 感谢您的输入,但它并没有真正回答我的问题,即如何处理数据类型和参数数量未知的接口。
    • 你可以使用Bundle,用于变量类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 2021-05-18
    • 2023-04-07
    相关资源
    最近更新 更多