如何将套接字/文件描述符传递给Android中的其他应用程序

时间:2012-01-17 00:45:01

标签: android sockets ipc file-descriptor

是否可以将Socket / FileDescriptor从一个活动传递到其他应用程序中的其他活动? 我尝试使用Intent但是

  

java.lang.IllegalArgumentException:在Intent

中传递的文件描述符

请帮忙!

2 个答案:

答案 0 :(得分:0)

当然可以 - 使用内容提供商。你必须创建自己的内容提供商并覆盖其方法openFile。请阅读此处,例如:http://www.grokkingandroid.com/handling-binary-data-with-contentproviders/

答案 1 :(得分:-1)

简短的回答是:可能没有,但是......

其他应用程序中的活动在另一个进程中运行。我相信,没有能力将Socket或FileDescriptor从一个进程传递到另一个进程 - 无论是在Java还是在Android中。但是在Linux中使用UNIX套接字和SCM_RIGHTS是可能的:man unix(7)cmsg(3)。由于Android基于Linux内核,可能,您可以在C中编写此功能,并使用JNI将其传递给Java代码(请参阅Android NDK)。可能,您还必须实现自己的Socket和FileDescriptor版本。总而言之,我认为你真的不想做到这一切。可能是最好的方法 - 检查您的任务并找到另一种更简单的解决方案。

以防万一:在一个应用程序中,您可以自由地重用Sockets和FileDescriptors。例如,使用静态成员和某种同步Intents。