VpnService.Builder.Establish メソッド

定義

このビルダーに指定されたパラメーターを使用して VPN インターフェイスを作成します。

[Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")]
public virtual Android.OS.ParcelFileDescriptor? Establish ();
[<Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")>]
abstract member Establish : unit -> Android.OS.ParcelFileDescriptor
override this.Establish : unit -> Android.OS.ParcelFileDescriptor

戻り値

ParcelFileDescriptor VPN インターフェイスの場合、または null アプリケーションが準備されていない場合。

属性

例外

パラメーターがオペレーティング システムで受け入れられない場合は〘。

オペレーティング システムでパラメーターを適用できない場合は〘。

サービスが正しく宣言 AndroidManifest.xmlされていない場合は 、

注釈

このビルダーに指定されたパラメーターを使用して VPN インターフェイスを作成します。 インターフェイスは IP パケットで動作し、アプリケーションがそれらにアクセスするためにファイル記述子が返されます。 各読み取りでは、インターフェイスにルーティングされた送信パケットが取得されます。 各書き込みでは、インターフェイスから受信したのと同じように、受信パケットが挿入されます。 ファイル記述子は、Java スレッドのブロックを回避するために、既定では非ブロッキング モードになります。 ファイル記述子をネイティブ空間で完全に使用するには、以下を参照してください ParcelFileDescriptor#detachFd()。 アプリケーションは、VPN 接続が終了したときにファイル記述子を閉じる必要があります。 VPN インターフェイスが削除され、システムによってネットワークが自動的に復元されます。

競合を回避するために、アクティブな VPN インターフェイスは同時に 1 つだけ存在できます。 通常、VPN 接続の有効期間中にネットワーク パラメーターが変更されることはありません。 また、アプリケーションでは、前のファイル記述子を閉じた後に新しいファイル記述子を作成することも一般的です。 ただし、シームレスなハンドオーバーを実行しながら、2 つのインターフェイスを持つことはまれですが、不可能ではありません。 この場合、新しいインターフェイスが正常に作成されると、古いインターフェイスが非アクティブ化されます。 両方のファイル記述子が有効ですが、送信パケットが新しいインターフェイスにルーティングされるようになりました。 そのため、古いファイル記述子をドレインした後、アプリケーションはそれを閉じて、新しいファイル記述子の使用を開始する必要があります。 新しいインターフェイスを作成できない場合、既存のインターフェイスとそのファイル記述子はそのまま残ります。

何らかの理由でインターフェイスを作成できない場合は、例外がスローされます。 ただし、このメソッドは、アプリケーションが準備されていないか取り消された場合に返 null されます。 これは、他の VPN アプリケーション間で起こりうる競合状態を解決するのに役立ちます。

の Java ドキュメントandroid.net.VpnService.Builder.establish()

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

適用対象

こちらもご覧ください