2012-01-17 2 views
2

Возможно ли передать Socket/FileDescriptor из одной активности в другую деятельность в другом приложении? Я попытался с помощью Intent, но получилКак передать дескриптор сокета/файла в другое приложение в Android

java.lang.IllegalArgumentException: File дескрипторы передаются в Intent

Пожалуйста, помогите!

+1

Уверен, что вы можете использовать услугу Binder.
Проверьте http://stackoverflow.com/questions/14413810/sharing-file-descriptor-using-android-binder. – videoguy

+0

Возможный дубликат http://stackoverflow.com/a/23775778 –

ответ

-1

Короткий ответ: наверное, нет, но ...

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

На всякий случай: внутри одного приложения вы можете свободно использовать Сокеты и FileDescriptors. Например, используя статические элементы и какие-то намерения синхронизации.

+0

Это красноречиво. [Связывание Java с SCM_RIGHTS] (https://developer.android.com/reference/android/net/LocalSocket.html) существует с самой ранней версии Android. Android собственный IPC, Binder, [также имел функцию передачи дескрипторов] (https://developer.android.com/reference/android/os/Parcel.html#writeFileDescriptor%28java.io.FileDescriptor%29) с самых ранних выпусков платформы , – user1643723

Смежные вопросы