Internet check over android.net.NetworkCapabilities not working

前端 未结 1 765
小鲜肉
小鲜肉 2020-12-31 10:10

I have a question about android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET. According to the JavaDocs this \"indicates that this network should be able to

相关标签:
1条回答
  • 2020-12-31 10:47

    For devices with API 23+ you can check flag NET_CAPABILITY_VALIDATED

    @RequiresApi(api = Build.VERSION_CODES.M)
    private static boolean hasInternetConnectionM(final Context context) {
        final ConnectivityManager connectivityManager = (ConnectivityManager)context.
                getSystemService(Context.CONNECTIVITY_SERVICE);
    
        final Network network = connectivityManager.getActiveNetwork();
        final NetworkCapabilities capabilities = connectivityManager
                .getNetworkCapabilities(network);
    
        return capabilities != null
                && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
    }
    

    I check it on different devices and it works right. Except Xiaomi Redmi 3S MIUI 8 - it returns NET_CAPABILITY_VALIDATED for Wi-Fi without internet access.

    For API < 23 I use ping.

    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题