在Android上获取VPN连接状态

Jon*_* H. 10 vpn android

是否可以检查Android设备是否连接到VPN服务器? API中的搜索为Android 1.6提供了"paltform highlight",因此这并不能让我充满信心.

Nes*_*zon 9

您可以注册到broadcastreceiver,所有vpn状态都将转到您的应用程序.

将此添加到应用程序清单:

<receiver android:name=".ConnectivityReceiver">
  <intent-filter>
    <action android:name="vpn.connectivity" />
  </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

创建一个类:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class ConnectivityReceiver extends BroadcastReceiver 
{
  public void onReceive(Context c, Intent intent) 
  {
    String state = intent.getSerializableExtra("connection_state").toString();

    Log.d("**************", state.toString());

    if (state.equals("CONNECTING")) {
      // Do what needs to be done
    }
    else if (state.equals("CONNECTED")) {
      // Do what needs to be done
    }
    else if (state.equals("IDLE")) {
      int errorCode = intent.getIntExtra("err", 0);
      if (errorCode != 0) {
        // Do what needs to be done to report a failure
      }
      else {
        // Normal disconnect
      }
    }
    else if (state.equals("DISCONNECTING")) {
      // Usually not very interesting
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案无法在Android 4.0+上运行,我阅读了Android源代码,不再有这样的vpn.connectivity广播...... (17认同)
  • 撞!2022 年更新吗? (3认同)