如何将流(InputStream / OutputStream)发送到aidl?

时间:2016-02-27 21:40:12

标签: android ipc parcelable aidl

我有一个应用程序可用于IPC AIDL进程,我想在进程(我的应用程序和AIDL进程)之间共享流,然后如何进行。 我知道我们只能通过aidl发送原始数据类型和parcelable对象,但我的要求是将输入和输出流发送到aidl进程。 如何实现这一点。

2 个答案:

答案 0 :(得分:1)

您无法通过AIDL直接发送流。

您可能需要将数据流包装在ContentProvider中,因为它支持流式传输。然后,通过AIDL传递指向您的提供商及其流的Uri

根据流的来源,您可能会获得基础数据的ParcelFileDescriptor,并且可以通过AIDL传递。

答案 1 :(得分:1)

您可以使用ParcelFileDescriptor.createPipe()。请参阅OpenKeychain的API库中的ParcelFileDescriptorUtil

调用应用程序使用一个ParcelFileDescriptor来读取(或写入),另一个传递给接收应用程序并使用它来编写(或读取)。