Reputation: 565
How to get android.net.NetworkCapabilities
on Android?
I looked at https://developer.android.com/reference/android/net/ConnectivityManager.html and did not find any way to get NetworkCapabilities
object.
Any suggestions on how to get it?
Upvotes: 9
Views: 10157
Reputation: 338
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
On Android > 23 you can use ConnectivityManager
and getActiveNetwork()
Upvotes: 6
Reputation: 1372
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]);
}
But this is available with API 21 and above.
Upvotes: 13