am 4f564cde
: Tweaks to download manager API based on API review feedback
Merge commit '4f564cdeb8478f1a20263fc036c74cc4a63145c3' into gingerbread-plus-aosp * commit '4f564cdeb8478f1a20263fc036c74cc4a63145c3': Tweaks to download manager API based on API review feedback
This commit is contained in:
@ -97436,6 +97436,21 @@
|
|||||||
<parameter name="uri" type="android.net.Uri">
|
<parameter name="uri" type="android.net.Uri">
|
||||||
</parameter>
|
</parameter>
|
||||||
</constructor>
|
</constructor>
|
||||||
|
<method name="addRequestHeader"
|
||||||
|
return="android.net.DownloadManager.Request"
|
||||||
|
abstract="false"
|
||||||
|
native="false"
|
||||||
|
synchronized="false"
|
||||||
|
static="false"
|
||||||
|
final="false"
|
||||||
|
deprecated="not deprecated"
|
||||||
|
visibility="public"
|
||||||
|
>
|
||||||
|
<parameter name="header" type="java.lang.String">
|
||||||
|
</parameter>
|
||||||
|
<parameter name="value" type="java.lang.String">
|
||||||
|
</parameter>
|
||||||
|
</method>
|
||||||
<method name="setAllowedNetworkTypes"
|
<method name="setAllowedNetworkTypes"
|
||||||
return="android.net.DownloadManager.Request"
|
return="android.net.DownloadManager.Request"
|
||||||
abstract="false"
|
abstract="false"
|
||||||
@ -97472,7 +97487,39 @@
|
|||||||
deprecated="not deprecated"
|
deprecated="not deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
<parameter name="description" type="java.lang.String">
|
<parameter name="description" type="java.lang.CharSequence">
|
||||||
|
</parameter>
|
||||||
|
</method>
|
||||||
|
<method name="setDestinationInExternalFilesDir"
|
||||||
|
return="android.net.DownloadManager.Request"
|
||||||
|
abstract="false"
|
||||||
|
native="false"
|
||||||
|
synchronized="false"
|
||||||
|
static="false"
|
||||||
|
final="false"
|
||||||
|
deprecated="not deprecated"
|
||||||
|
visibility="public"
|
||||||
|
>
|
||||||
|
<parameter name="context" type="android.content.Context">
|
||||||
|
</parameter>
|
||||||
|
<parameter name="dirType" type="java.lang.String">
|
||||||
|
</parameter>
|
||||||
|
<parameter name="subPath" type="java.lang.String">
|
||||||
|
</parameter>
|
||||||
|
</method>
|
||||||
|
<method name="setDestinationInExternalPublicDir"
|
||||||
|
return="android.net.DownloadManager.Request"
|
||||||
|
abstract="false"
|
||||||
|
native="false"
|
||||||
|
synchronized="false"
|
||||||
|
static="false"
|
||||||
|
final="false"
|
||||||
|
deprecated="not deprecated"
|
||||||
|
visibility="public"
|
||||||
|
>
|
||||||
|
<parameter name="dirType" type="java.lang.String">
|
||||||
|
</parameter>
|
||||||
|
<parameter name="subPath" type="java.lang.String">
|
||||||
</parameter>
|
</parameter>
|
||||||
</method>
|
</method>
|
||||||
<method name="setDestinationUri"
|
<method name="setDestinationUri"
|
||||||
@ -97488,7 +97535,7 @@
|
|||||||
<parameter name="uri" type="android.net.Uri">
|
<parameter name="uri" type="android.net.Uri">
|
||||||
</parameter>
|
</parameter>
|
||||||
</method>
|
</method>
|
||||||
<method name="setMediaType"
|
<method name="setMimeType"
|
||||||
return="android.net.DownloadManager.Request"
|
return="android.net.DownloadManager.Request"
|
||||||
abstract="false"
|
abstract="false"
|
||||||
native="false"
|
native="false"
|
||||||
@ -97498,22 +97545,7 @@
|
|||||||
deprecated="not deprecated"
|
deprecated="not deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
<parameter name="mediaType" type="java.lang.String">
|
<parameter name="mimeType" type="java.lang.String">
|
||||||
</parameter>
|
|
||||||
</method>
|
|
||||||
<method name="setRequestHeader"
|
|
||||||
return="android.net.DownloadManager.Request"
|
|
||||||
abstract="false"
|
|
||||||
native="false"
|
|
||||||
synchronized="false"
|
|
||||||
static="false"
|
|
||||||
final="false"
|
|
||||||
deprecated="not deprecated"
|
|
||||||
visibility="public"
|
|
||||||
>
|
|
||||||
<parameter name="header" type="java.lang.String">
|
|
||||||
</parameter>
|
|
||||||
<parameter name="value" type="java.lang.String">
|
|
||||||
</parameter>
|
</parameter>
|
||||||
</method>
|
</method>
|
||||||
<method name="setShowRunningNotification"
|
<method name="setShowRunningNotification"
|
||||||
@ -97539,7 +97571,7 @@
|
|||||||
deprecated="not deprecated"
|
deprecated="not deprecated"
|
||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
<parameter name="title" type="java.lang.String">
|
<parameter name="title" type="java.lang.CharSequence">
|
||||||
</parameter>
|
</parameter>
|
||||||
</method>
|
</method>
|
||||||
<method name="setVisibleInDownloadsUi"
|
<method name="setVisibleInDownloadsUi"
|
||||||
@ -97577,17 +97609,6 @@
|
|||||||
visibility="public"
|
visibility="public"
|
||||||
>
|
>
|
||||||
</field>
|
</field>
|
||||||
<field name="NETWORK_WIMAX"
|
|
||||||
type="int"
|
|
||||||
transient="false"
|
|
||||||
volatile="false"
|
|
||||||
value="4"
|
|
||||||
static="true"
|
|
||||||
final="true"
|
|
||||||
deprecated="not deprecated"
|
|
||||||
visibility="public"
|
|
||||||
>
|
|
||||||
</field>
|
|
||||||
</class>
|
</class>
|
||||||
<class name="LocalServerSocket"
|
<class name="LocalServerSocket"
|
||||||
extends="java.lang.Object"
|
extends="java.lang.Object"
|
||||||
|
@ -19,19 +19,21 @@ package android.net;
|
|||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.ContentUris;
|
import android.content.ContentUris;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.CursorWrapper;
|
import android.database.CursorWrapper;
|
||||||
|
import android.os.Environment;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.provider.BaseColumns;
|
import android.provider.BaseColumns;
|
||||||
import android.provider.Downloads;
|
import android.provider.Downloads;
|
||||||
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -254,6 +256,10 @@ public class DownloadManager {
|
|||||||
/**
|
/**
|
||||||
* This class contains all the information necessary to request a new download. The URI is the
|
* This class contains all the information necessary to request a new download. The URI is the
|
||||||
* only required parameter.
|
* only required parameter.
|
||||||
|
*
|
||||||
|
* Note that the default download destination is a shared volume where the system might delete
|
||||||
|
* your file if it needs to reclaim space for system use. If this is a problem, use a location
|
||||||
|
* on external storage (see {@link #setDestinationUri(Uri)}.
|
||||||
*/
|
*/
|
||||||
public static class Request {
|
public static class Request {
|
||||||
/**
|
/**
|
||||||
@ -268,19 +274,13 @@ public class DownloadManager {
|
|||||||
*/
|
*/
|
||||||
public static final int NETWORK_WIFI = 1 << 1;
|
public static final int NETWORK_WIFI = 1 << 1;
|
||||||
|
|
||||||
/**
|
|
||||||
* Bit flag for {@link #setAllowedNetworkTypes} corresponding to
|
|
||||||
* {@link ConnectivityManager#TYPE_WIMAX}.
|
|
||||||
*/
|
|
||||||
public static final int NETWORK_WIMAX = 1 << 2;
|
|
||||||
|
|
||||||
private Uri mUri;
|
private Uri mUri;
|
||||||
private Uri mDestinationUri;
|
private Uri mDestinationUri;
|
||||||
private Map<String, String> mRequestHeaders = new HashMap<String, String>();
|
private List<Pair<String, String>> mRequestHeaders = new ArrayList<Pair<String, String>>();
|
||||||
private String mTitle;
|
private CharSequence mTitle;
|
||||||
private String mDescription;
|
private CharSequence mDescription;
|
||||||
private boolean mShowNotification = true;
|
private boolean mShowNotification = true;
|
||||||
private String mMediaType;
|
private String mMimeType;
|
||||||
private boolean mRoamingAllowed = true;
|
private boolean mRoamingAllowed = true;
|
||||||
private int mAllowedNetworkTypes = ~0; // default to all network types allowed
|
private int mAllowedNetworkTypes = ~0; // default to all network types allowed
|
||||||
private boolean mIsVisibleInDownloadsUi = true;
|
private boolean mIsVisibleInDownloadsUi = true;
|
||||||
@ -300,12 +300,12 @@ public class DownloadManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the local destination for the downloaded data. Must be a file URI to a path on
|
* Set the local destination for the downloaded file. Must be a file URI to a path on
|
||||||
* external storage, and the calling application must have the WRITE_EXTERNAL_STORAGE
|
* external storage, and the calling application must have the WRITE_EXTERNAL_STORAGE
|
||||||
* permission.
|
* permission.
|
||||||
*
|
*
|
||||||
* By default, downloads are saved to a generated file in the download cache and may be
|
* By default, downloads are saved to a generated filename in the shared download cache and
|
||||||
* deleted by the download manager at any time.
|
* may be deleted by the system at any time to reclaim space.
|
||||||
*
|
*
|
||||||
* @return this object
|
* @return this object
|
||||||
*/
|
*/
|
||||||
@ -315,13 +315,62 @@ public class DownloadManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an HTTP header to be included with the download request.
|
* Set the local destination for the downloaded file to a path within the application's
|
||||||
|
* external files directory (as returned by {@link Context#getExternalFilesDir(String)}.
|
||||||
|
*
|
||||||
|
* @param context the {@link Context} to use in determining the external files directory
|
||||||
|
* @param dirType the directory type to pass to {@link Context#getExternalFilesDir(String)}
|
||||||
|
* @param subPath the path within the external directory, including the destination filename
|
||||||
|
* @return this object
|
||||||
|
*/
|
||||||
|
public Request setDestinationInExternalFilesDir(Context context, String dirType,
|
||||||
|
String subPath) {
|
||||||
|
setDestinationFromBase(context.getExternalFilesDir(dirType), subPath);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the local destination for the downloaded file to a path within the public external
|
||||||
|
* storage directory (as returned by
|
||||||
|
* {@link Environment#getExternalStoragePublicDirectory(String)}.
|
||||||
|
*
|
||||||
|
* @param dirType the directory type to pass to
|
||||||
|
* {@link Environment#getExternalStoragePublicDirectory(String)}
|
||||||
|
* @param subPath the path within the external directory, including the destination filename
|
||||||
|
* @return this object
|
||||||
|
*/
|
||||||
|
public Request setDestinationInExternalPublicDir(String dirType, String subPath) {
|
||||||
|
setDestinationFromBase(Environment.getExternalStoragePublicDirectory(dirType), subPath);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setDestinationFromBase(File base, String subPath) {
|
||||||
|
if (subPath == null) {
|
||||||
|
throw new NullPointerException("subPath cannot be null");
|
||||||
|
}
|
||||||
|
mDestinationUri = Uri.withAppendedPath(Uri.fromFile(base), subPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an HTTP header to be included with the download request. The header will be added to
|
||||||
|
* the end of the list.
|
||||||
* @param header HTTP header name
|
* @param header HTTP header name
|
||||||
* @param value header value
|
* @param value header value
|
||||||
* @return this object
|
* @return this object
|
||||||
|
* @see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2">HTTP/1.1
|
||||||
|
* Message Headers</a>
|
||||||
*/
|
*/
|
||||||
public Request setRequestHeader(String header, String value) {
|
public Request addRequestHeader(String header, String value) {
|
||||||
mRequestHeaders.put(header, value);
|
if (header == null) {
|
||||||
|
throw new NullPointerException("header cannot be null");
|
||||||
|
}
|
||||||
|
if (header.contains(":")) {
|
||||||
|
throw new IllegalArgumentException("header may not contain ':'");
|
||||||
|
}
|
||||||
|
if (value == null) {
|
||||||
|
value = "";
|
||||||
|
}
|
||||||
|
mRequestHeaders.add(Pair.create(header, value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,7 +378,7 @@ public class DownloadManager {
|
|||||||
* Set the title of this download, to be displayed in notifications (if enabled)
|
* Set the title of this download, to be displayed in notifications (if enabled)
|
||||||
* @return this object
|
* @return this object
|
||||||
*/
|
*/
|
||||||
public Request setTitle(String title) {
|
public Request setTitle(CharSequence title) {
|
||||||
mTitle = title;
|
mTitle = title;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -338,19 +387,20 @@ public class DownloadManager {
|
|||||||
* Set a description of this download, to be displayed in notifications (if enabled)
|
* Set a description of this download, to be displayed in notifications (if enabled)
|
||||||
* @return this object
|
* @return this object
|
||||||
*/
|
*/
|
||||||
public Request setDescription(String description) {
|
public Request setDescription(CharSequence description) {
|
||||||
mDescription = description;
|
mDescription = description;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the Internet Media Type of this download. This will override the media type declared
|
* Set the MIME content type of this download. This will override the content type declared
|
||||||
* in the server's response.
|
* in the server's response.
|
||||||
* @see <a href="http://www.ietf.org/rfc/rfc1590.txt">RFC 1590, defining Media Types</a>
|
* @see <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7">HTTP/1.1
|
||||||
|
* Media Types</a>
|
||||||
* @return this object
|
* @return this object
|
||||||
*/
|
*/
|
||||||
public Request setMediaType(String mediaType) {
|
public Request setMimeType(String mimeType) {
|
||||||
mMediaType = mediaType;
|
mMimeType = mimeType;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,7 +478,7 @@ public class DownloadManager {
|
|||||||
|
|
||||||
putIfNonNull(values, Downloads.COLUMN_TITLE, mTitle);
|
putIfNonNull(values, Downloads.COLUMN_TITLE, mTitle);
|
||||||
putIfNonNull(values, Downloads.COLUMN_DESCRIPTION, mDescription);
|
putIfNonNull(values, Downloads.COLUMN_DESCRIPTION, mDescription);
|
||||||
putIfNonNull(values, Downloads.COLUMN_MIME_TYPE, mMediaType);
|
putIfNonNull(values, Downloads.COLUMN_MIME_TYPE, mMimeType);
|
||||||
|
|
||||||
values.put(Downloads.COLUMN_VISIBILITY,
|
values.put(Downloads.COLUMN_VISIBILITY,
|
||||||
mShowNotification ? Downloads.VISIBILITY_VISIBLE
|
mShowNotification ? Downloads.VISIBILITY_VISIBLE
|
||||||
@ -443,16 +493,16 @@ public class DownloadManager {
|
|||||||
|
|
||||||
private void encodeHttpHeaders(ContentValues values) {
|
private void encodeHttpHeaders(ContentValues values) {
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (Map.Entry<String, String> entry : mRequestHeaders.entrySet()) {
|
for (Pair<String, String> header : mRequestHeaders) {
|
||||||
String headerString = entry.getKey() + ": " + entry.getValue();
|
String headerString = header.first + ": " + header.second;
|
||||||
values.put(Downloads.Impl.RequestHeaders.INSERT_KEY_PREFIX + index, headerString);
|
values.put(Downloads.Impl.RequestHeaders.INSERT_KEY_PREFIX + index, headerString);
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putIfNonNull(ContentValues contentValues, String key, String value) {
|
private void putIfNonNull(ContentValues contentValues, String key, Object value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
contentValues.put(key, value);
|
contentValues.put(key, value.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,7 @@ public class DownloadManagerTestApp extends DownloadManagerBaseTest {
|
|||||||
|
|
||||||
Uri remoteUri = getExternalFileUri(filename);
|
Uri remoteUri = getExternalFileUri(filename);
|
||||||
Request request = new Request(remoteUri);
|
Request request = new Request(remoteUri);
|
||||||
request.setMediaType(getMimeMapping(DownloadFileType.APK));
|
request.setMimeType(getMimeMapping(DownloadFileType.APK));
|
||||||
|
|
||||||
dlRequest = mDownloadManager.enqueue(request);
|
dlRequest = mDownloadManager.enqueue(request);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user