Bug 1476716 - Use DownloadManager.COLUMN_LOCAL_URI to query downloads; r?sdaswani draft
authorPetru Lingurar <petru.lingurar@softvision.ro>
Thu, 19 Jul 2018 17:59:36 +0300
changeset 820428 9f65508bb2a3e93ea54c5e3785ae74bb60861180
parent 820343 183ee39bf309cd8463d8db5b5c8eb232cd0dac53
push id116824
push userplingurar@mozilla.com
push dateThu, 19 Jul 2018 15:00:35 +0000
reviewerssdaswani
bugs1476716
milestone63.0a1
Bug 1476716 - Use DownloadManager.COLUMN_LOCAL_URI to query downloads; r?sdaswani After API 24 DownloadManager.COLUMN_LOCAL_FILENAME got deprecated and querying for it would throw an error. To get around this DownloadManager.COLUMN_LOCAL_URI can be used but which adds the "file://" prefix. MozReview-Commit-ID: CvkoFyRCLo6
mobile/android/base/java/org/mozilla/gecko/DownloadsIntegration.java
--- a/mobile/android/base/java/org/mozilla/gecko/DownloadsIntegration.java
+++ b/mobile/android/base/java/org/mozilla/gecko/DownloadsIntegration.java
@@ -28,16 +28,17 @@ import android.media.MediaScannerConnect
 import android.net.Uri;
 import android.os.Environment;
 import android.text.TextUtils;
 import android.util.Log;
 
 public class DownloadsIntegration implements BundleEventListener
 {
     private static final String LOGTAG = "GeckoDownloadsIntegration";
+    private static final String URI_FILE_PREFIX = "file://";
 
     private static final List<String> UNKNOWN_MIME_TYPES;
     static {
         final ArrayList<String> tempTypes = new ArrayList<>(3);
         tempTypes.add("unknown/unknown"); // This will be used as a default mime type for unknown files
         tempTypes.add("application/unknown");
         tempTypes.add("application/octet-stream"); // Github uses this for APK files
         UNKNOWN_MIME_TYPES = Collections.unmodifiableList(tempTypes);
@@ -67,17 +68,20 @@ public class DownloadsIntegration implem
         }
 
         public static Download fromBundle(final GeckoBundle obj) {
             final String path = obj.getString("path");
             return new Download(path);
         }
 
         public static Download fromCursor(final Cursor c) {
-            final String path = c.getString(c.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_FILENAME));
+            String path = c.getString(c.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_URI));
+            if (path.contains(URI_FILE_PREFIX)) {
+                path = path.replace(URI_FILE_PREFIX, "");
+            }
             final long id = c.getLong(c.getColumnIndexOrThrow(DownloadManager.COLUMN_ID));
             return new Download(path, id);
         }
 
         public boolean equals(final Download download) {
             return file.equals(download.file);
         }
     }