|
@@ -21,6 +21,7 @@
|
|
|
package com.nextcloud.client.network;
|
|
|
|
|
|
import android.net.ConnectivityManager;
|
|
|
+import android.net.NetworkCapabilities;
|
|
|
import android.net.NetworkInfo;
|
|
|
|
|
|
import com.nextcloud.client.account.Server;
|
|
@@ -110,7 +111,17 @@ class ConnectivityServiceImpl implements ConnectivityService {
|
|
|
|
|
|
if (networkInfo != null) {
|
|
|
boolean isConnected = networkInfo.isConnectedOrConnecting();
|
|
|
- boolean isMetered = ConnectivityManagerCompat.isActiveNetworkMetered(platformConnectivityManager);
|
|
|
+
|
|
|
+ // more detailed check
|
|
|
+ boolean isMetered;
|
|
|
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
|
|
+ NetworkCapabilities networkCapabilities = platformConnectivityManager.getNetworkCapabilities(
|
|
|
+ platformConnectivityManager.getActiveNetwork());
|
|
|
+
|
|
|
+ isMetered = !networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
|
|
|
+ } else {
|
|
|
+ isMetered = ConnectivityManagerCompat.isActiveNetworkMetered(platformConnectivityManager);
|
|
|
+ }
|
|
|
boolean isWifi = networkInfo.getType() == ConnectivityManager.TYPE_WIFI || hasNonCellularConnectivity();
|
|
|
return new Connectivity(isConnected, isMetered, isWifi, null);
|
|
|
} else {
|