VPN没有连接变化?

时间:2011-05-17 13:52:45

标签: android

VPN连接或断开连接时,有没有办法获得通知?由于我所看到的,ConnectivityManager不会广播任何关于此的意图。

我还尝试(未成功)注册隐藏的ACTION_VPN_CONNECTIVITY广播(如 android.net.vpn.VpnManager.java 源代码中所示):

    context.registerReceiver(new BroadcastReceiver()
        {
            public void onReceive(Context context, Intent intent)
            {
                android.util.Log.d("MyApp", "Received VPN broadcast.");
            }
        }, new IntentFilter("vpn.connectivity")); // VpnManager.ACTION_VPN_CONNECTIVITY

除了定期轮询网络接口以检测新网络接口的创建(通常是 ppp0 )之外,有没有办法检测VPN是否已连接?

祝你好运, 大卫

3 个答案:

答案 0 :(得分:1)

sgs2和模拟器一起使用:

    getApplicationContext().registerReceiver(new BroadcastReceiver()
    {
        public void onReceive(Context context, Intent intent)
        {
            logger.Log("VPN broadcast "+context.toString()+": ["+intent.toString()+"]");
        }
    }, new IntentFilter("vpn.connectivity"));

答案 1 :(得分:0)

我试着听你提到的“vpn.connectivity”事件,它确实适用于我的Nexus One(Android 2.3.3)。我不知道它是否有任何区别,但我在清单中注册了接收器,而不是在运行时进行。

答案 2 :(得分:0)

你应该使用这个例子:

 <service android:name=".ExampleVpnService"
     android:permission="android.permission.BIND_VPN_SERVICE">
 <intent-filter>
     <action android:name="android.net.VpnService"/>
 </intent-filter>