summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@android.com> 2016-01-07 09:58:40 -0700
committer Jeff Sharkey <jsharkey@android.com> 2016-01-07 09:58:43 -0700
commitaec99bf78ff2404bf5497fdcb01430150709d8b3 (patch)
treebadcfc78253d3c9533176aab0f375db0db483b32
parent8b0db0401e1a1c2582180edb39efb25e28521afa (diff)
Internal components still need filename access.
Give them a way to force-enable filename access, bypassing the recently added deprecated check. Bug: 26438975 Change-Id: Ifd1e3debf7c7b3113907a5f2815c29ddb7db581f
-rw-r--r--core/java/android/app/DownloadManager.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java
index a9516d03ba0d..ed4bb28427ae 100644
--- a/core/java/android/app/DownloadManager.java
+++ b/core/java/android/app/DownloadManager.java
@@ -920,9 +920,9 @@ public class DownloadManager {
private final ContentResolver mResolver;
private final String mPackageName;
- private final int mTargetSdkVersion;
private Uri mBaseUri = Downloads.Impl.CONTENT_URI;
+ private boolean mAccessFilename;
/**
* @hide
@@ -930,7 +930,10 @@ public class DownloadManager {
public DownloadManager(Context context) {
mResolver = context.getContentResolver();
mPackageName = context.getPackageName();
- mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion;
+
+ // Callers can access filename columns when targeting old platform
+ // versions; otherwise we throw telling them it's deprecated.
+ mAccessFilename = context.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N;
}
/**
@@ -946,6 +949,11 @@ public class DownloadManager {
}
}
+ /** {@hide} */
+ public void setAccessFilename(boolean accessFilename) {
+ mAccessFilename = accessFilename;
+ }
+
/**
* Enqueue a new download. The download will start automatically once the download manager is
* ready to execute it and connectivity is available.
@@ -1010,7 +1018,7 @@ public class DownloadManager {
if (underlyingCursor == null) {
return null;
}
- return new CursorTranslator(underlyingCursor, mBaseUri, mTargetSdkVersion);
+ return new CursorTranslator(underlyingCursor, mBaseUri, mAccessFilename);
}
/**
@@ -1279,12 +1287,12 @@ public class DownloadManager {
*/
private static class CursorTranslator extends CursorWrapper {
private final Uri mBaseUri;
- private final int mTargetSdkVersion;
+ private final boolean mAccessFilename;
- public CursorTranslator(Cursor cursor, Uri baseUri, int targetSdkVersion) {
+ public CursorTranslator(Cursor cursor, Uri baseUri, boolean accessFilename) {
super(cursor);
mBaseUri = baseUri;
- mTargetSdkVersion = targetSdkVersion;
+ mAccessFilename = accessFilename;
}
@Override
@@ -1310,7 +1318,7 @@ public class DownloadManager {
case COLUMN_LOCAL_URI:
return getLocalUri();
case COLUMN_LOCAL_FILENAME:
- if (mTargetSdkVersion >= Build.VERSION_CODES.N) {
+ if (!mAccessFilename) {
throw new IllegalArgumentException(
"COLUMN_LOCAL_FILENAME is deprecated;"
+ " use ContentResolver.openFileDescriptor() instead");