diff --git a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java index cf564bab9..e9d598619 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java +++ b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java @@ -31,16 +31,24 @@ import android.os.PatternMatcher; import android.os.Process; import android.support.v4.content.LocalBroadcastManager; import android.text.TextUtils; +import android.util.Log; import org.fdroid.fdroid.ProgressListener; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.SanitizedFile; import org.fdroid.fdroid.installer.ApkCache; +import javax.net.ssl.SSLHandshakeException; +import javax.net.ssl.SSLKeyException; +import javax.net.ssl.SSLPeerUnverifiedException; +import javax.net.ssl.SSLProtocolException; import java.io.File; import java.io.IOException; import java.net.ConnectException; +import java.net.HttpRetryException; +import java.net.NoRouteToHostException; import java.net.SocketTimeoutException; +import java.net.UnknownHostException; /** * DownloaderService is a service that handles asynchronous download requests @@ -215,7 +223,10 @@ public class DownloaderService extends Service { } } catch (InterruptedException e) { sendBroadcast(uri, Downloader.ACTION_INTERRUPTED, localFile, repoId, originalUrlString); - } catch (ConnectException | SocketTimeoutException e) { + } catch (ConnectException | HttpRetryException | NoRouteToHostException | SocketTimeoutException + | SSLHandshakeException | SSLKeyException | SSLPeerUnverifiedException | SSLProtocolException + | UnknownHostException e) { + Log.e(TAG, e.getLocalizedMessage()); sendBroadcast(uri, Downloader.ACTION_CONNECTION_FAILED, localFile, repoId, originalUrlString); } catch (IOException e) { e.printStackTrace(); diff --git a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java index fe579d57d..551704c86 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java @@ -271,6 +271,9 @@ public class ManageReposActivity extends AppCompatActivity @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); + if (isImportingRepo) { + ManageReposActivity.this.finish(); + } } }); @@ -785,7 +788,7 @@ public class ManageReposActivity extends AppCompatActivity repo.userMirrors = new String[]{url}; } else { int last = repo.userMirrors.length; - repo.userMirrors = Arrays.copyOf(repo.userMirrors, last); + repo.userMirrors = Arrays.copyOf(repo.userMirrors, last + 1); repo.userMirrors[last] = url; } values.put(RepoTable.Cols.USER_MIRRORS, Utils.serializeCommaSeparatedString(repo.userMirrors)); diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java index 185a1e364..bf38849ce 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java @@ -345,8 +345,10 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB } else { startActivity(new Intent(ACTION_ADD_REPO, intent.getData(), this, ManageReposActivity.class)); } + finish(); } else if (parser.getErrorMessage() != null) { Toast.makeText(this, parser.getErrorMessage(), Toast.LENGTH_LONG).show(); + finish(); } } }