Android VPN没有连接更改?

Android VPN没有连接更改?,android,Android,当连接或断开VPN时,是否有方法获得通知?因为我所看到的,ConnectionManager没有广播任何关于这方面的意图 我还尝试(未成功)注册到隐藏的ACTION_VPN_连接广播(如android.net.VPN.VpnManager.java源代码所示): registerReceiver(新的BroadcastReceiver() { 公共void onReceive(上下文、意图) { android.util.Log.d(“MyApp”,“接收VPN广播”); } },新的Inten

当连接或断开VPN时,是否有方法获得通知?因为我所看到的,ConnectionManager没有广播任何关于这方面的意图

我还尝试(未成功)注册到隐藏的ACTION_VPN_连接广播(如android.net.VPN.VpnManager.java源代码所示):

registerReceiver(新的BroadcastReceiver() { 公共void onReceive(上下文、意图) { android.util.Log.d(“MyApp”,“接收VPN广播”); } },新的IntentFilter(“vpn.connectivity”);//VpnManager.ACTION\u VPN\u连接 那么,除了定期轮询网络接口以检测新网络接口(通常为ppp0)的创建之外,还有没有一种方法可以检测VPN是否已连接

致以最良好的祝愿,
David

我试着收听你提到的“vpn.connectivity”事件,它在我的NexusOne(Android 2.3.3)上确实起了作用。我不知道这是否有什么不同,但我在清单中注册了接收器,而不是在运行时注册。sgs2和emulator使用:

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

您应该使用以下示例:

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


一个快速更新,说明Android 4.0(ICS)中不再存在“vpn.connectivity”。
 <service android:name=".ExampleVpnService"
     android:permission="android.permission.BIND_VPN_SERVICE">
 <intent-filter>
     <action android:name="android.net.VpnService"/>
 </intent-filter>