diff options
| author | 2016-01-07 09:58:40 -0700 | |
|---|---|---|
| committer | 2016-01-07 09:58:43 -0700 | |
| commit | aec99bf78ff2404bf5497fdcb01430150709d8b3 (patch) | |
| tree | badcfc78253d3c9533176aab0f375db0db483b32 | |
| parent | 8b0db0401e1a1c2582180edb39efb25e28521afa (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.java | 22 |
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"); |