How to programmatically create a new VPN interface with Android 4.0?
It appears that this is handled internally via the com.android.settings.vpn2.VpnDialog (and related) classes, which basically do KeyStore.getInstance().put(“VPN_[VPN ID]”, [encoded VpnProfile object]>) — which then causes files with names like “/data/misc/vpn/1000_VPN_[VPN ID]” to get created (where 1000 is apparently the system process ID). Using reflection (or one of the hacks to access the hidden / internal … Read more