diff --git a/app/src/main/java/eu/faircode/email/ContactInfo.java b/app/src/main/java/eu/faircode/email/ContactInfo.java index 63f29520db..9370b4d225 100644 --- a/app/src/main/java/eu/faircode/email/ContactInfo.java +++ b/app/src/main/java/eu/faircode/email/ContactInfo.java @@ -27,6 +27,8 @@ import android.database.ContentObserver; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.net.Uri; import android.os.Handler; import android.os.Looper; @@ -49,6 +51,7 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.ConnectException; import java.net.HttpURLConnection; +import java.net.SocketTimeoutException; import java.net.URL; import java.net.UnknownHostException; import java.nio.charset.StandardCharsets; @@ -364,7 +367,7 @@ public class ContactInfo { } } } catch (Throwable ex) { - if (isRecoverable(ex)) + if (isRecoverable(ex, context)) Log.w(ex); else { Log.e(ex); @@ -474,7 +477,13 @@ public class ContactInfo { } } - private static boolean isRecoverable(Throwable ex) { + private static boolean isRecoverable(Throwable ex, Context context) { + if (ex instanceof SocketTimeoutException) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo ni = (cm == null ? null : cm.getActiveNetworkInfo()); + return (ni == null || !ni.isConnected()); + } + return !(ex instanceof ConnectException || (ex instanceof UnknownHostException && ex.getMessage() != null &&