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-интерфейс. Обычно параметры сети никогда не изменяются во время существования VPN-подключения. Приложение также часто создает дескриптор файла после закрытия предыдущего. Однако это редко, но не невозможно иметь два интерфейса при выполнении простой передачи. В этом случае старый интерфейс будет деактивирован при успешном создании нового интерфейса. Оба дескриптора файлов действительны, но теперь исходящие пакеты будут перенаправлены в новый интерфейс. Поэтому после очистки старого дескриптора файла приложение ДОЛЖНО закрыть его и начать использовать дескриптор нового файла. Если не удается создать новый интерфейс, существующий интерфейс и его дескриптор файла остаются неуправляемыми.
Исключение возникает, если интерфейс не может быть создан по какой-либо причине. Однако этот метод возвращается null
, если приложение не подготовлено или отозвано. Это помогает решить возможные условия гонки между другими VPN-приложениями.
Документация по Java для android.net.VpnService.Builder.establish()
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.