private final ContentResolver mResolver;
private final String mPackageName;
- private final int mTargetSdkVersion;
private Uri mBaseUri = Downloads.Impl.CONTENT_URI;
+ private boolean mAccessFilename;
/**
* @hide
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;
}
/**
}
}
+ /** {@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.
if (underlyingCursor == null) {
return null;
}
- return new CursorTranslator(underlyingCursor, mBaseUri, mTargetSdkVersion);
+ return new CursorTranslator(underlyingCursor, mBaseUri, mAccessFilename);
}
/**
*/
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
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");