Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android API 21和x2B上VPN的网络信息;_Android_Android 5.0 Lollipop_Vpn - Fatal编程技术网

Android API 21和x2B上VPN的网络信息;

Android API 21和x2B上VPN的网络信息;,android,android-5.0-lollipop,vpn,Android,Android 5.0 Lollipop,Vpn,我的问题很简单,Android支持以编程方式检查VPN是否处于活动状态(在API 21+上)指: 我想我知道它应该如何工作,但代码(使用roboguice): 始终返回null。适用于WIFI或移动设备 是虫子吗?还是我做错了什么?或者我误解了它应该如何工作?网络功能将在API 21+上工作。您必须在所有现有网络上循环,并检查哪个网络具有VPN\u传输 ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(

我的问题很简单,Android支持以编程方式检查VPN是否处于活动状态(在API 21+上)指:

我想我知道它应该如何工作,但代码(使用roboguice):

始终返回null。适用于WIFI或移动设备


是虫子吗?还是我做错了什么?或者我误解了它应该如何工作?

网络功能将在API 21+上工作。您必须在所有现有网络上循环,并检查哪个网络具有
VPN\u传输

ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] networks = cm.getAllNetworks();

Log.i(TAG, "Network count: " + networks.length);
for(int i = 0; i < networks.length; i++) {

  NetworkCapabilities caps = cm.getNetworkCapabilities(networks[i]);

  Log.i(TAG, "Network " + i + ": " + networks[i].toString());
  Log.i(TAG, "VPN transport is: " + caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN));
  Log.i(TAG, "NOT_VPN capability is: " + caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN));

}
ConnectivityManager cm=(ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_服务);
Network[]networks=cm.getAllNetworks();
Log.i(标记“网络计数:”+网络长度);
对于(int i=0;i
如果要检查当前活动网络是否正在使用VPN,可以使用:

Network activeNetwork = connectivityManager.getActiveNetwork();
NetworkCapabilities caps = connectivityManager.getNetworkCapabilities(activeNetwork);
boolean vpnInUse = caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN);

@TheRealChx101不符合API 27。
Network activeNetwork = connectivityManager.getActiveNetwork();
NetworkCapabilities caps = connectivityManager.getNetworkCapabilities(activeNetwork);
boolean vpnInUse = caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN);