gpt4 book ai didi

android - Android API 21+ 上 VPN 的网络信息

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:32 27 4
gpt4 key购买 nike

我的问题很简单,Android 支持以编程方式检查 VPN 是否处于 Activity 状态(在 API 21+ 上)指的是:http://developer.android.com/reference/android/net/ConnectivityManager.html#TYPE_VPN

我以为我知道它应该如何工作但是代码(使用 roboguice):

@Inject
boolean checkVPN(ConnectivityManager connMgr) {
//don't know why always returns null:
NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_VPN);

boolean isVpnConn = networkInfo == null ? false : networkInfo.isConnected();
return isVpnConn;
}

总是返回空值。对于 WIFI 或 MOBILE 效果很好。

这是一个错误吗?或者我做错了什么?或者我误解了它应该如何工作?

最佳答案

NetworkCapabilities 将在 API 21+ 上运行。您必须遍历所有现有网络并检查哪个具有 VPN_TRANSPORT

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));

}

关于android - Android API 21+ 上 VPN 的网络信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29419175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com