Короткий ответ: вероятно нет, но ...
Действия в другом приложении выполняются в другом процессе. Я считаю, что нет возможности передавать Socket или FileDescriptor из одного процесса в другой - ни в Java, ни в Android. Но это возможно в Linux с использованием сокетов UNIX и SCM_RIGHTS: man unix (7) , cmsg (3) . Поскольку Android основан на ядре Linux, , вероятно, , вы можете написать эту функцию на C и передать ее в свой код Java с помощью JNI (см. Android NDK ). Возможно, вам также придется реализовать свои собственные версии Socket и FileDescriptor. Подводя итог, я думаю, что вы действительно не хотите делать все это. Вероятно, лучший способ - рассмотреть свою задачу и найти другое, более простое решение.
На всякий случай: внутри одного приложения вы можете свободно использовать Sockets и FileDescriptors. Например, используя статические члены и некоторые виды синхронизации Intents.