Ответ 1
Похоже, что это обрабатывается внутренне через классы com.android.settings.vpn2.VpnDialog(и связанные), которые в основном выполняют KeyStore.getInstance().put("VPN_[VPN ID]", [encoded VpnProfile object]>)
- который затем вызывает файлы с именами типа "/data/misc/vpn/1000_VPN_ [VPN ID]" для создания (где 1000, по-видимому, является идентификатором системного процесса).
Используя отражение (или один из хаков для доступа к скрытым/внутренним API-интерфейсам), вы можете сделать это самостоятельно, но поскольку ваш процесс не будет работать как системный процесс, системный VPN-браузер не увидит их.
Однако, согласно этому (http://code.google.com/p/android/issues/detail?id=8915), есть хотя бы одно приложение, которое делает это без корневого телефона, но источник, похоже, не доступен... так что, возможно, есть способ сделать это, что я не могу понять - мне определенно было бы интересно, если есть.
P.S. - Здесь другой аналогичный вопрос (хотя он специально спрашивает об использовании корневого устройства): Создать профиль VPN на Android