Можно ли передать Socket/FileDescriptor из одного действия в другое действие в другом приложении? Я пытался использовать Intent, но получил
java.lang.IllegalArgumentException: файловые дескрипторы, переданные в Intent
Пожалуйста помоги!
Можно ли передать Socket/FileDescriptor из одного действия в другое действие в другом приложении? Я пытался использовать Intent, но получил
java.lang.IllegalArgumentException: файловые дескрипторы, переданные в Intent
Пожалуйста помоги!
Конечно, можно — с помощью контент-провайдеров. Вам нужно создать своего собственного поставщика контента и переопределить его метод openFile. Прочтите, например, здесь: http://www.grokkingandroid.com/handling-binary-data-with-contentproviders/
Короткий ответ: наверное, нет, но...
Действия в другом приложении выполняются в другом процессе. Я полагаю, что нет возможности передавать Socket или FileDescriptor из одного процесса в другой — ни в Java, ни в Android. Но это возможно в Linux с использованием сокетов UNIX и SCM_RIGHTS: man unix(7), cmsg (3). Поскольку Android основан на ядре Linux, вероятно, вы можете написать эту функциональность на C и передать ее в свой Java-код с помощью JNI (см. Android NDK). Возможно, вам также придется реализовать свои собственные версии Socket и FileDescriptor. Подводя итог, я думаю, что вы действительно не хотите делать все это. Наверное, лучший способ — пересмотреть свою задачу и найти другое, более простое решение.
На всякий случай: внутри одного приложения вы можете свободно повторно использовать сокеты и файловые дескрипторы. Например, используя статические члены и какие-то интенты синхронизации.