X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryManagerActivity.java;h=be02da3c329cbefc10b215055bca65378e590ab6;hb=5c624e1782dc8079123c70e536ba5a3877211fdd;hp=3cc5e823fee1c5e752c40d933c17634e8c0c51e9;hpb=ad2d4c4a6f0589ff9bcc5ecb2602442cf2ba20f6;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java index 3cc5e82..be02da3 100644 --- a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java @@ -27,6 +27,7 @@ import android.content.SharedPreferences.Editor; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; @@ -224,7 +225,7 @@ public class DictionaryManagerActivity extends AppCompatActivity { } } zipFile = new ZipInputStream(new BufferedInputStream(zipFileStream)); - ZipEntry zipEntry = null; + ZipEntry zipEntry; while ((zipEntry = zipFile.getNextEntry()) != null) { // Note: this check prevents security issues like accidental path // traversal, which unfortunately ZipInputStream has no protection against. @@ -258,14 +259,15 @@ public class DictionaryManagerActivity extends AppCompatActivity { } finally { try { if (zipOut != null) zipOut.close(); - } catch (IOException e) {} + } catch (IOException ignored) {} try { if (zipFile != null) zipFile.close(); - } catch (IOException e) {} + } catch (IOException ignored) {} try { if (zipFileStream != null) zipFileStream.close(); - } catch (IOException e) {} - if (localZipFile != null && delete) localZipFile.delete(); + } catch (IOException ignored) {} + if (localZipFile != null && delete) //noinspection ResultOfMethodCallIgnored + localZipFile.delete(); } return result; } @@ -819,8 +821,11 @@ public class DictionaryManagerActivity extends AppCompatActivity { bytes / 1024.0 / 1024.0)); return; } - Request request = new Request( - Uri.parse(downloadUrl)); + // API 19 and earlier have issues with github URLs, both http and https. + // Really old (~API 10) DownloadManager cannot handle https at all. + // Work around both with in one. + String altUrl = downloadUrl.replace("https://github.com/rdoeffinger/Dictionary/releases/download/v0.2-dictionaries/", "http://ffmpeg.org/~reimar/dict/"); + Request request = new Request(Uri.parse(Build.VERSION.SDK_INT < 21 ? altUrl : downloadUrl)); String destFile; try { @@ -839,6 +844,14 @@ public class DictionaryManagerActivity extends AppCompatActivity { DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); + if (downloadManager == null) { + String msg = getString(R.string.downloadManagerQueryFailed); + new AlertDialog.Builder(DictionaryManagerActivity.this).setTitle(getString(R.string.error)) + .setMessage(getString(R.string.downloadFailed, msg)) + .setNeutralButton("Close", null).show(); + return; + } + try { downloadManager.enqueue(request); } catch (SecurityException e) {