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 アプリケーション間で発生する可能性のある競合状態を解決するのに役立ちます。

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

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

こちらもご覧ください