|
@@ -13,7 +13,8 @@ import android.net.ConnectivityManager;
|
|
import android.net.Network;
|
|
import android.net.Network;
|
|
import android.net.NetworkCapabilities;
|
|
import android.net.NetworkCapabilities;
|
|
import android.net.NetworkInfo;
|
|
import android.net.NetworkInfo;
|
|
-import android.os.NetworkOnMainThreadException;
|
|
|
|
|
|
+import android.os.Handler;
|
|
|
|
+import android.os.Looper;
|
|
|
|
|
|
import com.nextcloud.client.account.Server;
|
|
import com.nextcloud.client.account.Server;
|
|
import com.nextcloud.client.account.UserAccountManager;
|
|
import com.nextcloud.client.account.UserAccountManager;
|
|
@@ -23,6 +24,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
|
|
|
|
|
|
import org.apache.commons.httpclient.HttpStatus;
|
|
import org.apache.commons.httpclient.HttpStatus;
|
|
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
import androidx.core.net.ConnectivityManagerCompat;
|
|
import androidx.core.net.ConnectivityManagerCompat;
|
|
import kotlin.jvm.functions.Function1;
|
|
import kotlin.jvm.functions.Function1;
|
|
|
|
|
|
@@ -36,6 +38,7 @@ class ConnectivityServiceImpl implements ConnectivityService {
|
|
private final ClientFactory clientFactory;
|
|
private final ClientFactory clientFactory;
|
|
private final GetRequestBuilder requestBuilder;
|
|
private final GetRequestBuilder requestBuilder;
|
|
private final WalledCheckCache walledCheckCache;
|
|
private final WalledCheckCache walledCheckCache;
|
|
|
|
+ private final Handler mainThreadHandler = new Handler(Looper.getMainLooper());
|
|
|
|
|
|
static class GetRequestBuilder implements Function1<String, GetMethod> {
|
|
static class GetRequestBuilder implements Function1<String, GetMethod> {
|
|
@Override
|
|
@Override
|
|
@@ -57,16 +60,21 @@ class ConnectivityServiceImpl implements ConnectivityService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean isNetworkAndServerAvailable() throws NetworkOnMainThreadException {
|
|
|
|
- Network activeNetwork = platformConnectivityManager.getActiveNetwork();
|
|
|
|
- NetworkCapabilities networkCapabilities = platformConnectivityManager.getNetworkCapabilities(activeNetwork);
|
|
|
|
- boolean hasInternet = networkCapabilities != null && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
|
|
|
|
|
|
+ public void isNetworkAndServerAvailable(@NonNull GenericCallback<Boolean> callback) {
|
|
|
|
+ new Thread(() -> {
|
|
|
|
+ Network activeNetwork = platformConnectivityManager.getActiveNetwork();
|
|
|
|
+ NetworkCapabilities networkCapabilities = platformConnectivityManager.getNetworkCapabilities(activeNetwork);
|
|
|
|
+ boolean hasInternet = networkCapabilities != null && networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
|
|
|
|
|
|
- if (!hasInternet) {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
|
|
+ boolean result;
|
|
|
|
+ if (hasInternet) {
|
|
|
|
+ result = !isInternetWalled();
|
|
|
|
+ } else {
|
|
|
|
+ result = false;
|
|
|
|
+ }
|
|
|
|
|
|
- return !isInternetWalled();
|
|
|
|
|
|
+ mainThreadHandler.post(() -> callback.onComplete(result));
|
|
|
|
+ }).start();
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|