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
--- 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);
}
}