summaryrefslogtreecommitdiffstats
path: root/core/java/android/net/Downloads.java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2012-03-20 17:44:42 -0700
committerJeff Sharkey <jsharkey@android.com>2012-03-20 17:58:27 -0700
commit948eef82546c15086d0b78ce18ee874aa5c634f7 (patch)
tree76eedd51d5a15dc52e1ac6104bbb6e7808a1e401 /core/java/android/net/Downloads.java
parent127d4deab1606527777160d4ace3b92baae8b67f (diff)
downloadframeworks_base-948eef82546c15086d0b78ce18ee874aa5c634f7.zip
frameworks_base-948eef82546c15086d0b78ce18ee874aa5c634f7.tar.gz
frameworks_base-948eef82546c15086d0b78ce18ee874aa5c634f7.tar.bz2
Remove unused android.net.Downloads.
It's another set of constants that can be confused with those in android.provider.Downloads. Change-Id: I78ac058fa264d59a81f7655ab101c3fb2c8c17ff
Diffstat (limited to 'core/java/android/net/Downloads.java')
-rw-r--r--core/java/android/net/Downloads.java644
1 files changed, 0 insertions, 644 deletions
diff --git a/core/java/android/net/Downloads.java b/core/java/android/net/Downloads.java
deleted file mode 100644
index ed6d103..0000000
--- a/core/java/android/net/Downloads.java
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net;
-
-import android.content.ContentResolver;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.ParcelFileDescriptor;
-import android.os.SystemClock;
-import android.provider.BaseColumns;
-import android.util.Log;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.File;
-import java.io.InputStream;
-
-/**
- * The Download Manager
- *
- * @hide
- */
-public final class Downloads {
-
-
- /**
- * Download status codes
- */
-
- /**
- * This download hasn't started yet
- */
- public static final int STATUS_PENDING = 190;
-
- /**
- * This download has started
- */
- public static final int STATUS_RUNNING = 192;
-
- /**
- * This download has successfully completed.
- * Warning: there might be other status values that indicate success
- * in the future.
- * Use isSucccess() to capture the entire category.
- */
- public static final int STATUS_SUCCESS = 200;
-
- /**
- * This download can't be performed because the content type cannot be
- * handled.
- */
- public static final int STATUS_NOT_ACCEPTABLE = 406;
-
- /**
- * This download has completed with an error.
- * Warning: there will be other status values that indicate errors in
- * the future. Use isStatusError() to capture the entire category.
- */
- public static final int STATUS_UNKNOWN_ERROR = 491;
-
- /**
- * This download couldn't be completed because of an HTTP
- * redirect response that the download manager couldn't
- * handle.
- */
- public static final int STATUS_UNHANDLED_REDIRECT = 493;
-
- /**
- * This download couldn't be completed due to insufficient storage
- * space. Typically, this is because the SD card is full.
- */
- public static final int STATUS_INSUFFICIENT_SPACE_ERROR = 498;
-
- /**
- * This download couldn't be completed because no external storage
- * device was found. Typically, this is because the SD card is not
- * mounted.
- */
- public static final int STATUS_DEVICE_NOT_FOUND_ERROR = 499;
-
- /**
- * Returns whether the status is a success (i.e. 2xx).
- */
- public static boolean isStatusSuccess(int status) {
- return (status >= 200 && status < 300);
- }
-
- /**
- * Returns whether the status is an error (i.e. 4xx or 5xx).
- */
- public static boolean isStatusError(int status) {
- return (status >= 400 && status < 600);
- }
-
- /**
- * Download destinations
- */
-
- /**
- * This download will be saved to the external storage. This is the
- * default behavior, and should be used for any file that the user
- * can freely access, copy, delete. Even with that destination,
- * unencrypted DRM files are saved in secure internal storage.
- * Downloads to the external destination only write files for which
- * there is a registered handler. The resulting files are accessible
- * by filename to all applications.
- */
- public static final int DOWNLOAD_DESTINATION_EXTERNAL = 1;
-
- /**
- * This download will be saved to the download manager's private
- * partition. This is the behavior used by applications that want to
- * download private files that are used and deleted soon after they
- * get downloaded. All file types are allowed, and only the initiating
- * application can access the file (indirectly through a content
- * provider). This requires the
- * android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED permission.
- */
- public static final int DOWNLOAD_DESTINATION_CACHE = 2;
-
- /**
- * This download will be saved to the download manager's private
- * partition and will be purged as necessary to make space. This is
- * for private files (similar to CACHE_PARTITION) that aren't deleted
- * immediately after they are used, and are kept around by the download
- * manager as long as space is available.
- */
- public static final int DOWNLOAD_DESTINATION_CACHE_PURGEABLE = 3;
-
-
- /**
- * An invalid download id
- */
- public static final long DOWNLOAD_ID_INVALID = -1;
-
-
- /**
- * Broadcast Action: this is sent by the download manager to the app
- * that had initiated a download when that download completes. The
- * download's content: uri is specified in the intent's data.
- */
- public static final String ACTION_DOWNLOAD_COMPLETED =
- "android.intent.action.DOWNLOAD_COMPLETED";
-
- /**
- * If extras are specified when requesting a download they will be provided in the intent that
- * is sent to the specified class and package when a download has finished.
- * <P>Type: TEXT</P>
- * <P>Owner can Init</P>
- */
- public static final String COLUMN_NOTIFICATION_EXTRAS = "notificationextras";
-
-
- /**
- * Status class for a download
- */
- public static final class StatusInfo {
- public boolean completed = false;
- /** The filename of the active download. */
- public String filename = null;
- /** An opaque id for the download */
- public long id = DOWNLOAD_ID_INVALID;
- /** An opaque status code for the download */
- public int statusCode = -1;
- /** Approximate number of bytes downloaded so far, for debugging purposes. */
- public long bytesSoFar = -1;
-
- /**
- * Returns whether the download is completed
- * @return a boolean whether the download is complete.
- */
- public boolean isComplete() {
- return android.provider.Downloads.Impl.isStatusCompleted(statusCode);
- }
-
- /**
- * Returns whether the download is successful
- * @return a boolean whether the download is successful.
- */
- public boolean isSuccessful() {
- return android.provider.Downloads.Impl.isStatusSuccess(statusCode);
- }
- }
-
- /**
- * Class to access initiate and query download by server uri
- */
- public static final class ByUri extends DownloadBase {
- /** @hide */
- private ByUri() {}
-
- /**
- * Query where clause by app data.
- * @hide
- */
- private static final String QUERY_WHERE_APP_DATA_CLAUSE =
- android.provider.Downloads.Impl.COLUMN_APP_DATA + "=?";
-
- /**
- * Gets a Cursor pointing to the download(s) of the current system update.
- * @hide
- */
- private static final Cursor getCurrentOtaDownloads(Context context, String url) {
- return context.getContentResolver().query(
- android.provider.Downloads.Impl.CONTENT_URI,
- DOWNLOADS_PROJECTION,
- QUERY_WHERE_APP_DATA_CLAUSE,
- new String[] {url},
- null);
- }
-
- /**
- * Returns a StatusInfo with the result of trying to download the
- * given URL. Returns null if no attempts have been made.
- */
- public static final StatusInfo getStatus(
- Context context,
- String url,
- long redownload_threshold) {
- StatusInfo result = null;
- boolean hasFailedDownload = false;
- long failedDownloadModificationTime = 0;
- Cursor c = getCurrentOtaDownloads(context, url);
- try {
- while (c != null && c.moveToNext()) {
- if (result == null) {
- result = new StatusInfo();
- }
- int status = getStatusOfDownload(c, redownload_threshold);
- if (status == STATUS_DOWNLOADING_UPDATE ||
- status == STATUS_DOWNLOADED_UPDATE) {
- result.completed = (status == STATUS_DOWNLOADED_UPDATE);
- result.filename = c.getString(DOWNLOADS_COLUMN_FILENAME);
- result.id = c.getLong(DOWNLOADS_COLUMN_ID);
- result.statusCode = c.getInt(DOWNLOADS_COLUMN_STATUS);
- result.bytesSoFar = c.getLong(DOWNLOADS_COLUMN_CURRENT_BYTES);
- return result;
- }
-
- long modTime = c.getLong(DOWNLOADS_COLUMN_LAST_MODIFICATION);
- if (hasFailedDownload &&
- modTime < failedDownloadModificationTime) {
- // older than the one already in result; skip it.
- continue;
- }
-
- hasFailedDownload = true;
- failedDownloadModificationTime = modTime;
- result.statusCode = c.getInt(DOWNLOADS_COLUMN_STATUS);
- result.bytesSoFar = c.getLong(DOWNLOADS_COLUMN_CURRENT_BYTES);
- }
- } finally {
- if (c != null) {
- c.close();
- }
- }
- return result;
- }
-
- /**
- * Query where clause for general querying.
- */
- private static final String QUERY_WHERE_CLAUSE =
- android.provider.Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE + "=? AND " +
- android.provider.Downloads.Impl.COLUMN_NOTIFICATION_CLASS + "=?";
-
- /**
- * Delete all the downloads for a package/class pair.
- */
- public static final void removeAllDownloadsByPackage(
- Context context,
- String notification_package,
- String notification_class) {
- context.getContentResolver().delete(
- android.provider.Downloads.Impl.CONTENT_URI,
- QUERY_WHERE_CLAUSE,
- new String[] { notification_package, notification_class });
- }
-
- /**
- * The column for the id in the Cursor returned by
- * getProgressCursor()
- */
- public static final int getProgressColumnId() {
- return 0;
- }
-
- /**
- * The column for the current byte count in the Cursor returned by
- * getProgressCursor()
- */
- public static final int getProgressColumnCurrentBytes() {
- return 1;
- }
-
- /**
- * The column for the total byte count in the Cursor returned by
- * getProgressCursor()
- */
- public static final int getProgressColumnTotalBytes() {
- return 2;
- }
-
- /** @hide */
- private static final String[] PROJECTION = {
- BaseColumns._ID,
- android.provider.Downloads.Impl.COLUMN_CURRENT_BYTES,
- android.provider.Downloads.Impl.COLUMN_TOTAL_BYTES
- };
-
- /**
- * Returns a Cursor representing the progress of the download identified by the ID.
- */
- public static final Cursor getProgressCursor(Context context, long id) {
- Uri downloadUri = Uri.withAppendedPath(android.provider.Downloads.Impl.CONTENT_URI,
- String.valueOf(id));
- return context.getContentResolver().query(downloadUri, PROJECTION, null, null, null);
- }
- }
-
- /**
- * Class to access downloads by opaque download id
- */
- public static final class ById extends DownloadBase {
- /** @hide */
- private ById() {}
-
- /**
- * Get the mime tupe of the download specified by the download id
- */
- public static String getMimeTypeForId(Context context, long downloadId) {
- ContentResolver cr = context.getContentResolver();
-
- String mimeType = null;
- Cursor downloadCursor = null;
-
- try {
- Uri downloadUri = getDownloadUri(downloadId);
-
- downloadCursor = cr.query(
- downloadUri, new String[]{android.provider.Downloads.Impl.COLUMN_MIME_TYPE},
- null, null, null);
- if (downloadCursor.moveToNext()) {
- mimeType = downloadCursor.getString(0);
- }
- } finally {
- if (downloadCursor != null) downloadCursor.close();
- }
- return mimeType;
- }
-
- /**
- * Delete a download by Id
- */
- public static void deleteDownload(Context context, long downloadId) {
- ContentResolver cr = context.getContentResolver();
-
- String mimeType = null;
-
- Uri downloadUri = getDownloadUri(downloadId);
-
- cr.delete(downloadUri, null, null);
- }
-
- /**
- * Open a filedescriptor to a particular download
- */
- public static ParcelFileDescriptor openDownload(
- Context context, long downloadId, String mode)
- throws FileNotFoundException
- {
- ContentResolver cr = context.getContentResolver();
-
- String mimeType = null;
-
- Uri downloadUri = getDownloadUri(downloadId);
-
- return cr.openFileDescriptor(downloadUri, mode);
- }
-
- /**
- * Open a stream to a particular download
- */
- public static InputStream openDownloadStream(Context context, long downloadId)
- throws FileNotFoundException, IOException
- {
- ContentResolver cr = context.getContentResolver();
-
- String mimeType = null;
-
- Uri downloadUri = getDownloadUri(downloadId);
-
- return cr.openInputStream(downloadUri);
- }
-
- private static Uri getDownloadUri(long downloadId) {
- return Uri.parse(android.provider.Downloads.Impl.CONTENT_URI + "/" + downloadId);
- }
-
- /**
- * Returns a StatusInfo with the result of trying to download the
- * given URL. Returns null if no attempts have been made.
- */
- public static final StatusInfo getStatus(
- Context context,
- long downloadId) {
- StatusInfo result = null;
- boolean hasFailedDownload = false;
- long failedDownloadModificationTime = 0;
-
- Uri downloadUri = getDownloadUri(downloadId);
-
- ContentResolver cr = context.getContentResolver();
-
- Cursor c = cr.query(downloadUri, DOWNLOADS_PROJECTION, null /* selection */,
- null /* selection args */, null /* sort order */);
- try {
- if (c == null || !c.moveToNext()) {
- return result;
- }
-
- if (result == null) {
- result = new StatusInfo();
- }
- int status = getStatusOfDownload(c,0);
- if (status == STATUS_DOWNLOADING_UPDATE ||
- status == STATUS_DOWNLOADED_UPDATE) {
- result.completed = (status == STATUS_DOWNLOADED_UPDATE);
- result.filename = c.getString(DOWNLOADS_COLUMN_FILENAME);
- result.id = c.getLong(DOWNLOADS_COLUMN_ID);
- result.statusCode = c.getInt(DOWNLOADS_COLUMN_STATUS);
- result.bytesSoFar = c.getLong(DOWNLOADS_COLUMN_CURRENT_BYTES);
- return result;
- }
-
- long modTime = c.getLong(DOWNLOADS_COLUMN_LAST_MODIFICATION);
-
- result.statusCode = c.getInt(DOWNLOADS_COLUMN_STATUS);
- result.bytesSoFar = c.getLong(DOWNLOADS_COLUMN_CURRENT_BYTES);
- } finally {
- if (c != null) {
- c.close();
- }
- }
- return result;
- }
- }
-
-
- /**
- * Base class with common functionality for the various download classes
- */
- public static class DownloadBase {
- /** @hide */
- DownloadBase() {}
-
- /**
- * Initiate a download where the download will be tracked by its URI.
- */
- public static long startDownloadByUri(
- Context context,
- String url,
- String cookieData,
- boolean showDownload,
- int downloadDestination,
- boolean allowRoaming,
- boolean skipIntegrityCheck,
- String title,
- String notification_package,
- String notification_class,
- String notification_extras) {
- ContentResolver cr = context.getContentResolver();
-
- // Tell download manager to start downloading update.
- ContentValues values = new ContentValues();
- values.put(android.provider.Downloads.Impl.COLUMN_URI, url);
- values.put(android.provider.Downloads.Impl.COLUMN_COOKIE_DATA, cookieData);
- values.put(android.provider.Downloads.Impl.COLUMN_VISIBILITY,
- showDownload ? android.provider.Downloads.Impl.VISIBILITY_VISIBLE
- : android.provider.Downloads.Impl.VISIBILITY_HIDDEN);
- if (title != null) {
- values.put(android.provider.Downloads.Impl.COLUMN_TITLE, title);
- }
- values.put(android.provider.Downloads.Impl.COLUMN_APP_DATA, url);
-
-
- // NOTE: destination should be seperated from whether the download
- // can happen when roaming
- int destination = android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
- switch (downloadDestination) {
- case DOWNLOAD_DESTINATION_EXTERNAL:
- destination = android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
- break;
- case DOWNLOAD_DESTINATION_CACHE:
- if (allowRoaming) {
- destination = android.provider.Downloads.Impl.DESTINATION_CACHE_PARTITION;
- } else {
- destination =
- android.provider.Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING;
- }
- break;
- case DOWNLOAD_DESTINATION_CACHE_PURGEABLE:
- destination =
- android.provider.Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE;
- break;
- }
- values.put(android.provider.Downloads.Impl.COLUMN_DESTINATION, destination);
- values.put(android.provider.Downloads.Impl.COLUMN_NO_INTEGRITY,
- skipIntegrityCheck); // Don't check ETag
- if (notification_package != null && notification_class != null) {
- values.put(android.provider.Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE,
- notification_package);
- values.put(android.provider.Downloads.Impl.COLUMN_NOTIFICATION_CLASS,
- notification_class);
-
- if (notification_extras != null) {
- values.put(android.provider.Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS,
- notification_extras);
- }
- }
-
- Uri downloadUri = cr.insert(android.provider.Downloads.Impl.CONTENT_URI, values);
-
- long downloadId = DOWNLOAD_ID_INVALID;
- if (downloadUri != null) {
- downloadId = Long.parseLong(downloadUri.getLastPathSegment());
- }
- return downloadId;
- }
- }
-
- /** @hide */
- private static final int STATUS_INVALID = 0;
- /** @hide */
- private static final int STATUS_DOWNLOADING_UPDATE = 3;
- /** @hide */
- private static final int STATUS_DOWNLOADED_UPDATE = 4;
-
- /**
- * Column projection for the query to the download manager. This must match
- * with the constants DOWNLOADS_COLUMN_*.
- * @hide
- */
- private static final String[] DOWNLOADS_PROJECTION = {
- BaseColumns._ID,
- android.provider.Downloads.Impl.COLUMN_APP_DATA,
- android.provider.Downloads.Impl.COLUMN_STATUS,
- android.provider.Downloads.Impl._DATA,
- android.provider.Downloads.Impl.COLUMN_LAST_MODIFICATION,
- android.provider.Downloads.Impl.COLUMN_CURRENT_BYTES,
- };
-
- /**
- * The column index for the ID.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_ID = 0;
- /**
- * The column index for the URI.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_URI = 1;
- /**
- * The column index for the status code.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_STATUS = 2;
- /**
- * The column index for the filename.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_FILENAME = 3;
- /**
- * The column index for the last modification time.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_LAST_MODIFICATION = 4;
- /**
- * The column index for the number of bytes downloaded so far.
- * @hide
- */
- private static final int DOWNLOADS_COLUMN_CURRENT_BYTES = 5;
-
- /**
- * Gets the status of a download.
- *
- * @param c A Cursor pointing to a download. The URL column is assumed to be valid.
- * @return The status of the download.
- * @hide
- */
- private static final int getStatusOfDownload( Cursor c, long redownload_threshold) {
- int status = c.getInt(DOWNLOADS_COLUMN_STATUS);
- long realtime = SystemClock.elapsedRealtime();
-
- // TODO(dougz): special handling of 503, 404? (eg, special
- // explanatory messages to user)
-
- if (!android.provider.Downloads.Impl.isStatusCompleted(status)) {
- // Check if it's stuck
- long modified = c.getLong(DOWNLOADS_COLUMN_LAST_MODIFICATION);
- long now = System.currentTimeMillis();
- if (now < modified || now - modified > redownload_threshold) {
- return STATUS_INVALID;
- }
-
- return STATUS_DOWNLOADING_UPDATE;
- }
-
- if (android.provider.Downloads.Impl.isStatusError(status)) {
- return STATUS_INVALID;
- }
-
- String filename = c.getString(DOWNLOADS_COLUMN_FILENAME);
- if (filename == null) {
- return STATUS_INVALID;
- }
-
- return STATUS_DOWNLOADED_UPDATE;
- }
-
-
- /**
- * @hide
- */
- private Downloads() {}
-}