web-dev-qa-db-ja.com

Android 4.0でプログラムで新しいVPNインターフェースを作成する方法は?

Android 4.0の新しいVPN APIを使用して、プログラムでVPNインターフェースを作成できるかどうかを知りたい。私は http://developer.Android。 com/resources/samples/ToyVpn ただし、これは接続などを処理する完全なVPNクライアントを作成することです。新しいVPN構成を追加し、既存の構成を削除したいだけです。

このような質問はたくさんありますが、それらはすべて4.0より前のようです。以前はこれが不可能であったことを理解していますが、新しいVPN APIがそのような機能を提供していると思うでしょう。だから誰かがこれを行う方法を見つけましたか、それともまだ不可能ですか?方法があれば、正しい方向を教えてください。

28
gelupa

これはcom.Android.settings.vpn2.VpnDialog(および関連する)クラスを介して内部的に処理され、基本的にKeyStore.getInstance().put("VPN_[VPN ID]", [encoded VpnProfile object]>)を実行するようです。/1000_VPN_ [VPN ID]」を作成します(1000は明らかにシステムプロセスIDです)。

リフレクション(または非表示/内部APIにアクセスするためのハックの1つ)を使用してこれを自分で行うことができますが、プロセスがシステムプロセスとして実行されないため、システムVPNブラウザーはそれらを認識しません。

ただし、これによると( http://code.google.com/p/Android/issues/detail?id=8915 )、ルート化された電話なしでこれを行うアプリが少なくとも1つあり、しかし、ソースは利用可能ではないようです...だからおそらくこれを行うには、私が理解できないいくつかの方法があります-もしあれば、私は間違いなく興味があります。

追伸-別の同様の質問があります(具体的にはルート化されたデバイスの使用について尋ねています): AndroidでVPNプロファイルを作成する

13