Merge "Surfaces ParcelFileDescriptor#parseMode() as API" into klp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d473ebb7c4
@@ -18412,6 +18412,7 @@ package android.os {
|
||||
method public long getStatSize();
|
||||
method public static android.os.ParcelFileDescriptor open(java.io.File, int) throws java.io.FileNotFoundException;
|
||||
method public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor.OnCloseListener) throws java.io.IOException;
|
||||
method public static int parseMode(java.lang.String);
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
field public static final android.os.Parcelable.Creator CREATOR;
|
||||
field public static final int MODE_APPEND = 33554432; // 0x2000000
|
||||
|
||||
@@ -1310,7 +1310,7 @@ public abstract class ContentProvider implements ComponentCallbacks2 {
|
||||
throw new FileNotFoundException("Column _data not found.");
|
||||
}
|
||||
|
||||
int modeBits = ContentResolver.modeToMode(uri, mode);
|
||||
int modeBits = ParcelFileDescriptor.parseMode(mode);
|
||||
return ParcelFileDescriptor.open(new File(path), modeBits);
|
||||
}
|
||||
|
||||
|
||||
@@ -886,7 +886,7 @@ public abstract class ContentResolver {
|
||||
}
|
||||
} else if (SCHEME_FILE.equals(scheme)) {
|
||||
ParcelFileDescriptor pfd = ParcelFileDescriptor.open(
|
||||
new File(uri.getPath()), modeToMode(uri, mode));
|
||||
new File(uri.getPath()), ParcelFileDescriptor.parseMode(mode));
|
||||
return new AssetFileDescriptor(pfd, 0, -1);
|
||||
} else {
|
||||
if ("r".equals(mode)) {
|
||||
@@ -1158,33 +1158,6 @@ public abstract class ContentResolver {
|
||||
return res;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
static public int modeToMode(Uri uri, String mode) throws FileNotFoundException {
|
||||
int modeBits;
|
||||
if ("r".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_ONLY;
|
||||
} else if ("w".equals(mode) || "wt".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_TRUNCATE;
|
||||
} else if ("wa".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_APPEND;
|
||||
} else if ("rw".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_WRITE
|
||||
| ParcelFileDescriptor.MODE_CREATE;
|
||||
} else if ("rwt".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_WRITE
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_TRUNCATE;
|
||||
} else {
|
||||
throw new FileNotFoundException("Bad mode for " + uri + ": "
|
||||
+ mode);
|
||||
}
|
||||
return modeBits;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a row into a table at the given URL.
|
||||
*
|
||||
|
||||
@@ -461,6 +461,39 @@ public class ParcelFileDescriptor implements Parcelable, Closeable {
|
||||
return fd != null ? new ParcelFileDescriptor(fd) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a string representing a file mode, such as "rw", into a bitmask suitable for use
|
||||
* with {@link #open}.
|
||||
* <p>
|
||||
* @param mode The string representation of the file mode.
|
||||
* @return A bitmask representing the given file mode.
|
||||
* @throws IllegalArgumentException if the given string does not match a known file mode.
|
||||
*/
|
||||
public static int parseMode(String mode) {
|
||||
final int modeBits;
|
||||
if ("r".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_ONLY;
|
||||
} else if ("w".equals(mode) || "wt".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_TRUNCATE;
|
||||
} else if ("wa".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_WRITE_ONLY
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_APPEND;
|
||||
} else if ("rw".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_WRITE
|
||||
| ParcelFileDescriptor.MODE_CREATE;
|
||||
} else if ("rwt".equals(mode)) {
|
||||
modeBits = ParcelFileDescriptor.MODE_READ_WRITE
|
||||
| ParcelFileDescriptor.MODE_CREATE
|
||||
| ParcelFileDescriptor.MODE_TRUNCATE;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Bad mode '" + mode + "'");
|
||||
}
|
||||
return modeBits;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the actual FileDescriptor associated with this object.
|
||||
*
|
||||
|
||||
@@ -310,7 +310,7 @@ public class ExternalStorageProvider extends DocumentsProvider {
|
||||
String documentId, String mode, CancellationSignal signal)
|
||||
throws FileNotFoundException {
|
||||
final File file = getFileForDocId(documentId);
|
||||
return ParcelFileDescriptor.open(file, ContentResolver.modeToMode(null, mode));
|
||||
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user