diff options
| author | 2017-07-21 23:57:01 +0000 | |
|---|---|---|
| committer | 2017-07-21 23:57:01 +0000 | |
| commit | 93a1ab8ba19062ce64cf5e04157b30f34494153b (patch) | |
| tree | 64be3a9bfbae0b35fa9812250f10cb94e43f8140 | |
| parent | e8fe97e09d5338d562d19b18776934280801aae4 (diff) | |
| parent | f20c492190fb445a8b8118c3276df1b198fa4277 (diff) | |
Merge "Docs: Updates guidance about using permissions when accessing OBB expansion files, Bug: 34273998 Test: Ran "make" to verify error-free building." into oc-dev am: e4d0557334
am: f20c492190
Change-Id: I57da50e47d3fdfefa245baffdeaf16322b28fa30
| -rw-r--r-- | core/java/android/content/Context.java | 52 |
1 files changed, 43 insertions, 9 deletions
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 63a2cf002aa8..2d8249acb5bf 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -126,8 +126,8 @@ public abstract class Context { * File creation mode: allow all other applications to have read access to * the created file. * <p> - * As of {@link android.os.Build.VERSION_CODES#N} attempting to use this - * mode will throw a {@link SecurityException}. + * Starting from {@link android.os.Build.VERSION_CODES#N}, attempting to use this + * mode throws a {@link SecurityException}. * * @deprecated Creating world-readable files is very dangerous, and likely * to cause security holes in applications. It is strongly @@ -146,7 +146,7 @@ public abstract class Context { * File creation mode: allow all other applications to have write access to * the created file. * <p> - * As of {@link android.os.Build.VERSION_CODES#N} attempting to use this + * Starting from {@link android.os.Build.VERSION_CODES#N}, attempting to use this * mode will throw a {@link SecurityException}. * * @deprecated Creating world-writable files is very dangerous, and likely @@ -1129,13 +1129,47 @@ public abstract class Context { * </ul> * <p> * Starting in {@link android.os.Build.VERSION_CODES#KITKAT}, no permissions - * are required to read or write to the returned path; it's always - * accessible to the calling app. This only applies to paths generated for - * package name of the calling application. To access paths belonging to - * other packages, - * {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} and/or - * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} are required. + * are required to read or write to the path that this method returns. + * However, starting from {@link android.os.Build.VERSION_CODES#M}, + * to read the OBB expansion files, you must declare the + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} permission in the app manifest and ask for + * permission at runtime as follows: + * </p> + * <p> + * {@code <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" + * android:maxSdkVersion="23" />} + * </p> * <p> + * Starting from {@link android.os.Build.VERSION_CODES#N}, + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} + * permission is not required, so don’t ask for this + * permission at runtime. To handle both cases, your app must first try to read the OBB file, + * and if it fails, you must request + * {@link android.Manifest.permission#READ_EXTERNAL_STORAGE} permission at runtime. + * </p> + * + * <p> + * The following code snippet shows how to do this: + * </p> + * + * <pre> + * File obb = new File(obb_filename); + * boolean open_failed = false; + * + * try { + * BufferedReader br = new BufferedReader(new FileReader(obb)); + * open_failed = false; + * ReadObbFile(br); + * } catch (IOException e) { + * open_failed = true; + * } + * + * if (open_failed) { + * // request READ_EXTERNAL_STORAGE permission before reading OBB file + * ReadObbFileWithPermission(); + * } + * </pre> + * * On devices with multiple users (as described by {@link UserManager}), * multiple users may share the same OBB storage location. Applications * should ensure that multiple instances running under different users don't |