如何在Android上获取NetworkCapabilities对象?

ash*_*shb 3 android android-5.0-lollipop

如何android.net.NetworkCapabilities使用Android?

我查看了https://developer.android.com/reference/android/net/ConnectivityManager.html,但没有找到任何获取NetworkCapabilities对象的方法。

关于如何获得任何建议?

Sat*_*tty 9

ConnectivityManager connectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    Network[] networks = connectivity.getAllNetworks();
    for (int i = 0; i < networks.length; i++) {
        NetworkCapabilities capabilities = connectivity.getNetworkCapabilities(networks[i]);    
    }
Run Code Online (Sandbox Code Playgroud)

But this is available with API 21 and above.


Luc*_*tto 5

    NetworkCapabilities nc = null;

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if(netInfo != null) {
            nc = cm.getNetworkCapabilities(cm.getActiveNetwork());
        }

    }else{

        ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        Network[] networks = connectivity.getAllNetworks();
        for (int i = 0; i < networks.length && nc == null; i++) {
            nc = connectivity.getNetworkCapabilities(networks[i]);
        }
    }
    // use now nc
Run Code Online (Sandbox Code Playgroud)

在 Android > 23 上,您可以ConnectivityManager使用getActiveNetwork()