Android随笔-VPN判断

Android中判断当前网络是否为VPN

java 复制代码
    /**
     * 判断当前网络是否为VPN
     * @param context
     * @return
     */
    public static boolean hasVPN(Context context) {
        // 查询网络状态,被动监听网络状态变化
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        // 获取当前来凝结网络
        Network currentNetwork = cm.getActiveNetwork();
        // 获取当前网络能力
        NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(currentNetwork);
        // 是否是VPN端口
        return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
        // 是否为wifi
//        return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
        // 是否为蜂窝网络
//        return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    }
  • VPN
java 复制代码
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)
  • WIFI
java 复制代码
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI_AWARE);
  • 蜂窝
java 复制代码
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET);

其他读取网络状态可查考- Android网络状态读取

相关推荐
极客小云6 分钟前
【Android Gradle 构建常见报错及解决方法大全】
android·运维开发
Just_Paranoid1 小时前
【TaskbarDelegate】屏蔽上滑返回桌面手势功能
android·systemui·navigation·launcher·gesture
赛恩斯1 小时前
asfp 如何导入并使用aosp13
android
诸神黄昏EX1 小时前
Android Safety 系列专题【篇三:Secure Boot机制】
android
李坤林2 小时前
Android Binder 详解(4) Binder 线程池
android·java·binder
PuddingSama3 小时前
Gson 很好,但在Kotlin上有更合适的序列化工具「Kotlin Serialization」
android·kotlin·gson
教程分享大师4 小时前
移动云电脑W132D安卓9当贝固件线刷机包_ROM刷机教程
android
程序之巅4 小时前
VS code 远程python代码debug
android·java·python
恋猫de小郭5 小时前
罗技鼠标因为服务器证书过期无法使用?我是如何解决 SSL 证书问题
android·前端·flutter
yongui478345 小时前
MATLAB中回归模型常用误差指标(MSE、RMSE、MAPE等)的实现方法
android·matlab·回归