Remove depracated NetworkInfo API

Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
alperozturk 2023-11-01 09:57:30 +01:00 committed by Andy Scherzinger
parent f63699f02b
commit 2038acab2e
3 changed files with 20 additions and 57 deletions

View File

@ -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"

View File

@ -35,10 +35,11 @@ import dagger.Provides;
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,

View File

@ -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,