From ef6a72bff005aacf93aa019acde35eb56fd3551f Mon Sep 17 00:00:00 2001 From: alperozturk Date: Wed, 1 Nov 2023 09:57:30 +0100 Subject: [PATCH] Remove depracated NetworkInfo API Signed-off-by: alperozturk --- .../client/network/ConnectivityServiceImpl.kt | 67 +++++-------------- .../client/network/NetworkModule.java | 3 +- .../client/network/ConnectivityServiceTest.kt | 7 +- 3 files changed, 20 insertions(+), 57 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.kt b/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.kt index 3ffa304cf52c..175cc6ff4c23 100644 --- a/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.kt +++ b/app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.kt @@ -21,15 +21,13 @@ package com.nextcloud.client.network import android.net.ConnectivityManager import android.net.NetworkCapabilities -import android.net.NetworkInfo -import androidx.core.net.ConnectivityManagerCompat import com.nextcloud.client.account.UserAccountManager import com.nextcloud.operations.GetMethod import com.owncloud.android.lib.common.utils.Log_OC import org.apache.commons.httpclient.HttpStatus internal class ConnectivityServiceImpl( - private val platformConnectivityManager: ConnectivityManager, + private val connectivityManager: ConnectivityManager, private val accountManager: UserAccountManager, private val clientFactory: ClientFactory, private val requestBuilder: GetRequestBuilder, @@ -57,6 +55,21 @@ internal class ConnectivityServiceImpl( } } + @Suppress("TooGenericExceptionCaught") + override fun getConnectivity(): Connectivity { + val network = connectivityManager.activeNetwork + val networkCapabilities = connectivityManager.getNetworkCapabilities(network) + + return if (networkCapabilities != null) { + val isConnected = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + val isMetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED).not() + val isWifi = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) + Connectivity(isConnected, isMetered, isWifi, null) + } else { + Connectivity.DISCONNECTED + } + } + private fun isInternetWalledOnConnectedNonMeteredWifi(): Boolean { val baseServerAddress = accountManager.user.server.toString() return if (baseServerAddress.isEmpty()) { @@ -79,54 +92,6 @@ internal class ConnectivityServiceImpl( } } - @Suppress("TooGenericExceptionCaught") - override fun getConnectivity(): Connectivity { - val networkInfo: NetworkInfo? = try { - platformConnectivityManager.activeNetworkInfo - } catch (t: Throwable) { - null // no network available or no information (permission denied?) - } - return if (networkInfo != null) { - val isConnected = networkInfo.isConnectedOrConnecting - // more detailed check - val isMetered: Boolean = isNetworkMetered - val isWifi = (networkInfo.type == ConnectivityManager.TYPE_WIFI) || hasNonCellularConnectivity() - Connectivity(isConnected, isMetered, isWifi, null) - } else { - Connectivity.DISCONNECTED - } - } - - @Suppress("TooGenericExceptionCaught") - private val isNetworkMetered: Boolean - get() { - val network = platformConnectivityManager.activeNetwork - return try { - val networkCapabilities = platformConnectivityManager.getNetworkCapabilities(network) - if (networkCapabilities != null) { - !networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) - } else { - ConnectivityManagerCompat.isActiveNetworkMetered(platformConnectivityManager) - } - } catch (e: RuntimeException) { - Log_OC.e(TAG, "Exception when checking network capabilities", e) - false - } - } - - private fun hasNonCellularConnectivity(): Boolean { - for (networkInfo in platformConnectivityManager.allNetworkInfo) { - if (networkInfo.isConnectedOrConnecting && ( - networkInfo.type == ConnectivityManager.TYPE_WIFI || - networkInfo.type == ConnectivityManager.TYPE_ETHERNET - ) - ) { - return true - } - } - return false - } - companion object { private const val TAG = "ConnectivityServiceImpl" private const val CONNECTIVITY_CHECK_ROUTE = "/index.php/204" diff --git a/app/src/main/java/com/nextcloud/client/network/NetworkModule.java b/app/src/main/java/com/nextcloud/client/network/NetworkModule.java index cd29f844f249..0bb276fadd05 100644 --- a/app/src/main/java/com/nextcloud/client/network/NetworkModule.java +++ b/app/src/main/java/com/nextcloud/client/network/NetworkModule.java @@ -35,10 +35,11 @@ public class NetworkModule { @Provides - ConnectivityService connectivityService(ConnectivityManager connectivityManager, + ConnectivityService connectivityService(Context context, UserAccountManager accountManager, ClientFactory clientFactory, WalledCheckCache walledCheckCache) { + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); return new ConnectivityServiceImpl(connectivityManager, accountManager, clientFactory, diff --git a/app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt b/app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt index 7d1bc838921e..192e34b8f3e0 100644 --- a/app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt +++ b/app/src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt @@ -26,7 +26,6 @@ import android.net.NetworkInfo import com.nextcloud.client.account.Server import com.nextcloud.client.account.User import com.nextcloud.client.account.UserAccountManager -import com.nextcloud.client.logger.Logger import com.nextcloud.common.PlainClient import com.nextcloud.operations.GetMethod import com.owncloud.android.lib.resources.status.OwnCloudVersion @@ -102,9 +101,6 @@ class ConnectivityServiceTest { @Mock lateinit var networkCapabilities: NetworkCapabilities - @Mock - lateinit var logger: Logger - val baseServerUri = URI.create(SERVER_BASE_URL) val newServer = Server(baseServerUri, OwnCloudVersion.nextcloud_20) val legacyServer = Server(baseServerUri, OwnCloudVersion.nextcloud_16) @@ -116,7 +112,8 @@ class ConnectivityServiceTest { @Before fun setUpMocks() { - MockitoAnnotations.initMocks(this) + MockitoAnnotations.openMocks(this) + connectivityService = ConnectivityServiceImpl( platformConnectivityManager, accountManager,