2012-01-17 14 views
2

それは他のアプリケーションでは、他の活動に一つの活性からソケット/のFileDescriptorを渡すことは可能ですか?私はテントを使用してみましたが、はどのようにAndroidの中で他のアプリケーションへのソケット/ファイルディスクリプタを渡す

java.lang.IllegalArgumentExceptionが得 :テント

に渡されたファイル記述子が助けてくださいます!

+1

確かにバインダーサービスを使用できます。
チェック:http://stackoverflow.com/questions/14413810/sharing-file-descriptor-using-android-binder – videoguy

+0

可能なdupのhttp://stackoverflow.com/a/23775778 –

答えて

-1

短い答えは:他のプロセス内の他のアプリケーションの実行に

活動がないだろうが...。 JavaやAndroidでは、ソケットやFileDescriptorをあるプロセスから別のプロセスに渡すことはできないと私は信じています。しかし、LinuxではUNIXソケットとSCM_RIGHTS:man unix(7),cmsg(3)を使用することが可能です。 AndroidはLinuxカーネルをベースにしているので、(おそらく)、この機能をC言語で記述し、JNIを使​​ってJavaコードに渡すことができます(Android NDK参照)。おそらく、独自のバージョンのSocketとFileDescriptorも実装する必要があります。要約すると、私はあなたが本当にすべてをしたくないと思う。おそらく最善の方法 - あなたの仕事を見直し、別の簡単な解決策を見つけること。

念のために:一つのアプリケーション内で、あなたは自由にソケットやファイルディスクリプタを再利用することができます。たとえば、静的メンバーとある種の同期インテントを使用します。

+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

関連する問題