When Android 4.1 JellyBean (API 16) was announced at Google I/O, it introduced the following permission:
READ_EXTERNAL_STORAGE
Provides protected read access to external storage. In Android 4.1 by default all applications still have read access. This will be changed in a future release to require that applications explicitly request read access using this permission. If your application already requests write access, it will automatically get read access as well. There is a new developer option to turn on read access restriction, for developers to test their applications against how Android will behave in the future.
http://developer.android.com/about/versions/android-4.1.html#Permissions
I have an application that tagets API 16 and requires the WRITE_EXTERNAL_STORAGE permission. I am preparing to deploy an update and noticed that the READ_EXTERNAL_STORAGE permission is now listed as a required permission in the developer portal. It was not listed as a required permission in Google Play for an update deployed last week. This application does not explicitly request the READ_EXTERNAL_STORAGE permission.
Will users who have already granted the WRITE_EXTERNAL_STORAGE permission for this application be prompted to grant the additional, implicit READ_EXTERNAL_STORAGE permission when they update the application?
Update:
We have since released the app and JellyBean devices are automatically updating without requesting the READ_EXTERNAL_STORAGE permission. In a future release when I explicitly declare the requirement for READ_EXTERNAL_STORAGE, will users who have already granted the WRITE_EXTERNAL_STORAGE permission be asked to grant the READ_EXTERNAL_STORAGE permission?
You won't have to explicitly declare
READ_EXTERNAL_STORAGE
so long as you haveWRITE_EXTERNAL_STORAGE
. Previously the OS didn't enforce readonly access to the external storage, that is changing and you must request it now. But if you have write access you implicitly get read access.From http://developer.android.com/training/basics/data-storage/files.html
Since API 19 (Android 4.4) you must explicitly specify
READ_EXTERNAL_STORAGE
permission. Yes, if you haveWRITE_EXTERNAL_STORAGE
permission you will be implicitly grantedREAD_EXTERNAL_STORAGE
but if you need a read-only access to external storage you must specifyREAD_EXTERNAL_STORAGE
.Prooflink: http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE