All apps (even ones without external storage permissions) can now read and write from a designated private folder on external storage.
There's a new sharing framework called the Storage Access Framework that can be used to request access to other folders, which treats external storage in a manner similar to cloud storage.
It might be a harsh transition, but not completely surprising since it's been quite a while since Nexus devices have had external storage slots, and it's been quite obvious for a while that Google has been discouraging external storage.
The hopeful takeaway is that Google will be relaxing this discouragement now that they've figured out a strategy for external storage moving forward.
1. launch all flagship phones without sd slot to force use of gdrive
2. everyone buys other companies (budget?) phones because they have more features (eg sd card slot)
3. break that in software (because they can) so that feature is not "missing" on the flagships anymore.
4. instead of just removing, make the functionality be yet another entry point to gdrive by making the sd write api be analogous to the cloud write one.
google only fear to not fuck up like that was something like cyanogenmod, but, well...
On the contrary, the Storage Access Framework is an awesome development and how Google should integrate more of its play services: by having a provider agnostic API that fits their service as well as any other.
Anyone can be a SAF file provider by implementing the interface, and it's as easy as Intents to switch between them. It's silly to have "external" storage with special behavior at this point. Storage should act like storage, and apps should access that data consistently, without users having to remember which storage they're using for any particular purpose.
I don't see why you couldn't have a file management app that uses the new storage access framework to access external storage in the same way as online or internal storage - shouldn't it just be a matter of switching to the new API?
No, the Storage Access Framework does not expose the filesystem. All access is through DocumentsProvider implementations in the various apps that you have installed. WRITE_EXTERNAL_STORAGE now grants read-only access to secondary storage, and only system-level apps can request the WRITE_MEDIA_STORAGE permission that is necessary for read-write.
Hm, is there no system-level app installed by default that provides an implementation of DocumentsProvider that provides read/write access to the external SD card?
The entire card? No. The MediaStore provider provides access to the standard media storage directories (DCIM/, Music/, etc) and each individual app may provide a DocumentsProvider for their private storage (/data/<your.app>/ or whatever they've moved it to).
"The SAF makes it simple for users to browse and open documents, images, and other files across all of their their preferred document storage providers."
That's not true, you can ask any DocumentsProvider to delete or edit a file resource given a valid URI. Whether or not the DocumentsProvider that owns the resource will acknowledge your request is up to the DocumentsProvider.
At this point in my life; I am ready to challenge any design team of any mobile device which decides to leave out expandable [micro]SD storage to a bout of the fisticuffs.
There is absolutely NO reason any mobile device should lack this. [This is ESPECIALLY aimed at Mr. Smug; Ive]
How else would they up sell to the 64GB model? What if a device I bought 3 years ago could be still relevant by just upgrading an inexpensive flash card?
Not only is so restrictive as to be insulting, it harms the environment by forcing devices to die a premature death, I know my iPad 1 would be a whole lot more useful with a 64GB SDHC card in it.
I was super stoked to buy a Google Nexus tablet, after finding out there was no SD card slot, I forever declined that purchase.
now, had i been using stock image on that device... first it would be full of crapware that i couldn't uninstal. and since the available space is something like 250mb for apps, i wouldn't even be able to install 2 apps.
now, i've spent $500 on it. why should i already replace it if it does exactly what I need? just so i can have NFC? ha! no SD? ha! even less, non replaceable, battery life? ha! (i use an extended SEIDIO battery). no trackball with extremely visible and customizable full color alert led? ha!
the only thing it misses is a better screen some time. but i like the size, so i won't be switching to a fullHD phone with a phablet screen size. to fix it. Also the OLED screen is awesome to read at night. Ironically because of software, by features REMOVED on android after 2.3. on 2.3 on my custom roms i can have smart inverted colors in the browser. I don't have to choose between white on black pages with inverted images or bright pages with correct color images. i can have both! Also i can enable night mode render effects. Good lucky doing any of that on your shinny nexus 5.
I have a Galaxy Nexus that is barely supported by Google now, and its just a little over 2 years old. Going to recycle it and buy a Nexus 5.
I'm just a bit too old (31) to care anymore. No SD card? Whatevs. I'll use Dropbox/Evernote/Amazon's MP3 Player with wifi to get whatever I need onto the phone.
(1) We have more and more things we'd like to carry with us that take up more and more space.
(2) Fewer and fewer people in America and other countries have unlimited data plans.
(3) Lots of us take things like subways which have no internet access.
(4) Cloud privacy is a disaster thanks to the NSA, poor security implementations at cloud companies, regular intrusions of providers, regular intrusions of network infrastructure (example: ASUS and Netgear routers), etc
(5) Obscene markups of memory sizes above base by manufacturers
(6) Inability of consumers to get many phones with more than 32GB of storage and artificial limiting of supply on some providers (see: the incredibly stupid decision to make the HTC One 64GB an AT&T exclusive)
(7) etc etc
Yes, Google wants you to use the cloud and have everything in your Google Drive. For most of us, it's a bad idea from a financial, convenience and privacy perspective.
According to [1], a 3.5" floppy has a volume of 27828.9 mm^3 whilst the volume of a MicroSD is 132 mm^3. That's a ratio of 210. Biggest MicroSD I can find that's commonly available is 64GB; that gives you
(27828.9/132)*64GB = 13492GB or ~13.5TB
Which is an astonishing data density when you eventually wrap your head around it.
Cheapest MicroSD 64GB I can find is GBP36.98 which makes that 13.5TB a mere GBP7,765.8. Compare with 3TB drives at GBP87.12 (the current sweet spot) - 13.5TB would be GBP392.04 (~20x cheaper).
Sure they can, just not the MP3s that belong to another application. Each application can put its own private data on the external storage.
Most of the people here don't get how scary external storage was with Android. Every time you install an app with the android.permission.WRITE_EXTERNAL_STORAGE permission you have to worry about what it will do to every other applications data. Some apps (like file managers) need this but letting every app that wants to write data to external storage have the ability to trash every other apps data is just crazy. The private app directories on external storage is a MUCH better approach.
And if you want to install apps that can trash other apps then I'm okay with needing root for that.
Suppose I was previously using Media Player X and decide to try new Media Player Y. How does Media Player Y access the MP3s that were previously accessible to X? Likewise, if I uninstall X, will my MP3s disappear?
As far as user expectations go, MP3s, videos, word docs, and a whole slew of other file formats don't and shouldn't really belong to any application.
The person you responded to neglected to mention Android's MediaStore provider, which can store common media in various standard directories on the SD card (like /DCIM and /Music), which has been the standard storage mechanism for media since 1.0 and is still available in Kit Kat.
MediaStore is actually an unholy hybrid of database and filesystem. If you assume the data is entirely in one or the other (I mean, you didn't expect it to be consistent with itself, did you?) your code will break in different ways on different devices, since for some reason it's a favourite area of the manufacturers to play with.
No, it is a ContentProvider with a database-like API to which you have linked. The various system DocumentsProvider instances read and write to this provider.
This is also the standard API you access through ContentResolver, and this is still present in Kit Kat.
So a content provider is a really shitty non-hierarchal file system. I don't see that as an improvement. What about backup/restore apps? Those want to save and restore everything.
File systems are the worst general-purpose way to access data, except for all the other ways.
File managers may be out, but photo apps might be OK: they just need to somehow request full access to /DCIM through this new API (which I have not looked at). music & video players may be more awkward but possibly doable.
So moving from Android to iOS will be less painful in the near future. I think traversing the whole filesystem and adding a big SD Card are key features in Android devices.
If Apple launches a device with a bigger display they will eat part of the Android ecosystem.
And how you know this is a bullshit play to mess with SD cards specifically is right here:
>With WRITE_EXTERNAL_STORAGE, they also have:
> - Read and write for any public folder on the primary (built-in) storage
> - Read (not write) for any public folder on the secondary (SD card) storage
If this were really about security, why does the built-in storage let you write everywhere but the sd card not? It's not about security. It's about forcing you into the cloud. And there are a ton of reasons not to (privacy, financial aka bandwidth, lack of access on subways and similar, etc).
With every release, Android is less and less of an operating system that I recommend to friends and family. Openness and expandability were some of the key selling points and they're both going bye bye.
I feel like a right idiot for championing Google as an open alternative to Apple for so many years. It now appears that they were operating a giant bait and switch. Now that they are the incumbents they no longer benfit from openness, so say goodbye to writeable SD cards, XMPP federation, RSS support, Google Reader ...
Each change is defensible if viewed in isolation, but when seen as an whole it is obvious what the overall plan is.
This is a good switch. Apps can still read and write to external storage, just in an application specific directory. Look at it like this. If you are setting up a Linux server you don't run all your apps as root, you run them as non-privileged users. Why? Because an app misbehaving as root is a scary thing. But you also don't run all your non-privileged apps under the same user because if one of those apps starts misbehaving and you ran everything as the same user then its almost as bad as running everything as root - one bad app can trash all your data. Android had the same problem with external storage and the android.permission.WRITE_EXTERNAL_STORAGE permission - one bad app can trash all your external data. This update will make me much more comfortable installing apps that write to external storage because they can only write to their own external storage as it should be. If an app needs the ability to modify everybodies external storage data doesn't that sound like something that would need root permissions on a properly secured Linux system? Why should Android be any different?
If an mp3 player (A) imports some files and stores them on external storage, can mp3 player (B) read the mp3s and write meta-data to those files? What about different text editors?
I am a little confused about using root in the example as on a PC a user can have an external storage device with music and all apps can find and play and write to it.
If application A has private files (regardless of the type) then no, no other (non-root) application can access them. There is a content provider framework that an application can use to register files that it would like to allow other applications to access.
Look at where things are in the PC world, viruses, malware, keyloggers, etc. The android permission model is the alternative. Allowing any application access to the entire external storage if it needed to write one single directory was a bad thing. If you want android to continue to allow random apk installation from different sources they needed to patch this hole. The other option to keep your phone safe is a completely walled garden approach (Apple) that polices apps a lot more than Google seems to want to.
Apparently, it is a zero tolerance policy except for the provided apps even if you trust the app developer.. Which basically means you cannot truly replace the provided apps without rooting the phone.
Indeed. Which is why I say this represents another component of a strategy away from open systems, and towards the sort of proprietary walled-garden experience offered by Apple.
Not only is this a betrayal of many early Google evangelists - myself included - it's a fairly cynical exercise to build such a system on the Linux kernel.
The plan here is quite simply that any memory in your device becomes a cache of some cloud storage somewhere.
SD cards have the problem that they can be removed, and thus easily inspected, so cloud services wanting to keep their data locked up when it's cached have to resort to measures such as Facebook's Conceal library, which is more to do with preventing users from getting their own info out of Facebook than it is preventing any actual malicious activity.
Why not just an app that registered a service that was basically a cloud provider for your SD card? Any apps wanting to access the shared storage would use the service's API to request access to a content. The shared storage would really be the private storage for the storage app.
Seems like this would be the best of both worlds, no crazy free-for-all external storage but shared data with some type of prompting to grant an app access to a particular path of shared storage.
You forgot: Remember how much praise Android would get on HN for being Open Source. Not so much any more. Give it a few more years and will have just the open source kernel with a monolithic, closed source, Google Play Services library onto of it.
But it is? Even on older devices that can still use flash, chrome refuses to utilize it. You could make a reasonable counter-argument and say that the AOSP browser can still access it, but seeing as the stock browser hasn't seen any interfaces updates since ICS, I'd say that the stock browser is as outdated as flash itself.
Its becoming clear that two distinct androids are forming: the ghettoized one that is AOSP with its outdated/feature stripped version of apps and the first class versions that require the Google play service.
Doesn't firefox use flash fine? Most android browsers support plugins. The main problem is the awkwardness of getting flash in the first place, and that's entirely on adobe.
I use my iPad almost every night solely for watching videos. Countless video streaming services (even minor ones) are now utilizing HTML5 video. I can't remember the last time I've come across a video I haven't been able to watch due to the lack of Flash.
While I sympathise with the pain this is going to cause, I have an sdcard that I've been using since I got my Nexus One. It's a horrible mess because apps create things and then never delete them (etc).
Having a much more organised system for storing data (and removing it if the app is removed) makes a lot of sense.
They're removable, so any call to the filesystem could potentially fail at any given time. They're mountable over UMS, meaning an external system can remove the volume you're currently attempting to write, and delete or modify your data by the time you get it back. They're slow, which is hell on a game's startup time, for instance.
The permissions change doesn't really fix any of these problems, but the sugary API they've written to support it certainly makes it a lot nicer to work with. Dealing with all these cases using the File API is not an enjoyable task.
Every single android phone I've owned had the SD card under the battery. That's not going to get removed too often. My current phone (Kyocera Torque) is essentially unusable without an SD Card.
P.S. If there is a setting to tell google play to install to SD card, let me know. I keep running out of internal space because I forget to move new apps.
"Restricting writes in this way ensures the system can clean up files when applications are uninstalled."
Isn't this backward? Controlling clutter is more important on the internal storage that can't be replaced. If some apps write a bunch of crap to my external SD card I can clean it up myself or swap out a larger capacity.
AFAIK Android has always advised against storing anything on external storage, because you're not promised that it's going to be available, and Android can't full manage it (has no idea who/what wrote which files, especially since it can be written by other devices).
You can still delete files from your internal storage, but now Android can help you manage it as well.
I don't see unmanaged files on a removable SD card as a problem. That's the point, the SD card is for data that can be removed and handled outside the Android operating system. I want apps to be able to write things to my SD card that will remain when I uninstall them. I can do things like save a backup of my app settings then restore on a different device.
The internal storage should have restrictions on managed data because if you have untracked files that get left behind when an app is uninstalled, you may not notice and they'll just be cruft. That's where I think the restrictions should be placed, not on the SD cards.
I made a feature request to allow users the option to give apps write access. Google has already "declined" this feature request, but I encourage you to comment and star this issue, if you'd like the option to delete songs in your music player.
Just another it's-not-DRM restriction from your freedom-loving watchers at the Googleplex. Redefining 'open source' with lawyers and shady trips to North Korea since god knows when. Now, unit, return to your regularly scheduled email/phone/SMS control feed, keyed to your IMEI/ISIN/email/phone number/credit card/API keys/web properties/contacts/GPS/nearby wifi SSIDs, and proceed to be monitored.
There seems to be little comment about actual "choice". A lot of comments on this site and the original news site seem to be either "I hate SD cards because..." or "I love SD cards because...".
The question to ask is: What about the consumer in general? Does this decision limit choice?
The answer is: Yes, it does, and that's a bad thing.
I now cannot use an app that I paid for to copy MY files to an arbitrary folder on MY device and use a different program I also paid for to view/manipulate them.
This is one of the key reasons I prefer my Galaxy Note 2 over my previous 3 iPhones. Anyone here who loves working with iTunes? Crickets...
Making specious arguments about the coding difficulty involved with SD cards suddenly being removed is just inane. Are these people going to be arguing for PCs that prevent you working with external hard drives? No? I thought not. Are these people not bothered with having to pay an "Apple-like tax" on internal storage at 2-3x markup?
People have been using memory cards in their cameras, mp3 players etc and there's been no backlash about hard that is to manage. It's a non-issue.
Google, don't eff this up. Prefer choice over restrictions.
Has anyone seriously though about continuing where Palm left off with WebOS? It seems that at this point, WebOS would run just as well on the hardware that Mozilla is targeting with FirefoxOS, since the last WebOS phones came out what... 3 years ago?
From what I heard WebOS was awesome. It's surprising that nobody has picked up where Palm left off.
I've heard from android developers that a major feature of android is being able to change the source in the event that Google takes away their favourite features.
Not anymore. The percentage of Android that is open source at the consumer level of a phone is shrinking with each release. The Google services bits are a larger and larger percentage of the phone. With every release, something new falls by the wayside (search, SMS, gallery, launcher, etc). Many of the most popular Android apps will not run on AOSP (the actual Android open source operating system) because they are dependent on Google services which are not part of Android (location services, in-app purchasing, etc).
There are now 2 Androids. There is the Android base operating system which is open source. And there is the full Android install with Google that you get on a phone or tablet that actually runs all your apps.
It's an entirely open source version of Android. SD card support is probably available already in Replicant. If not, you can easily add it back in yourself.
I don't understand. Don't Android apps have unique users? Like app_xxx? Why couldn't the fuse filesystem just set the /mnt/sdcard to be owned by root (chmod 644), and app directories owned by app_xxx (chmod 660)? That would fix whatever read permissions on apps could be leveraged from being in the sdcard_rw group. Access to read sdcard files has never been an issue, sdcard permissions have been granted. Anything that didn't require sdcard permissions would be in the /data/ directory. Someone please explain this?
Think again, when the internal storage is miniscule compared to the amount of data these devices create and use now. Wanna take movies with you? Nope. One year worth of photos add up to more than your internal storage? Nope. Want to download podcasts to listen to? Well, if you have any space left in your internal storage after the photos, maybe....
Here in Taiwan everyone uses SD cards. Also because when you take your phone to servicing (which it will inevitably need some point), can just take the SD card out, and you have your data. With internal storage you better wipe the mother before handing it in, because who knows who will be checking what you have on your phone..
As one data point, I explicitly did not purchase an HTC One because it did not have an accessible SD card. It is a key buying feature for me.
The main reason I like the external SD card is that I can bump up the storage capacity tremendously, which has all kinds of benefits. It also has other nice perks: changing between devices becomes easier, easier to use as a portable USB drive, etc.
I feel I cannot be alone in this, but I don't have any hard numbers for you, sorry.
The elephant in the room: it is used for porn. Porn drives many things IT. As it is still forbidden or restricted in many countries, most user cannot just point their browser to porn sites. So they download or copy pics and vids to SD cards. Porn on the phone is so convenient for students, young workers (because they do not hav e their own room with a good PC screen to "relax" alone).
Why do you think most (and best) Android file explorers are Chinese?
Seriously, Nexus are not even marketed or sold retail or with contracts in most countries, and the list of countries in where they can even be bought online is a very small list of countries. Samsung outsells Nexus 100 to 1 because they phones actually exist as a product someone looking for a phone can choose.
Motorola offers more storage than Samsung and almost all of their phones come with SD slots and is also outsold by Samsung 5 to 1.
That seems completely unreasonable, but in fact, one reason I like my Galaxy Note II is that it supports a 64Gb card.
(It sure ain't TouchWiz!)
It is mainly the large screen though for me, but the 64Gb card holds my music collection and some videos and a lot of reference books when I am in no position to stream anything.
I would love to see hard numbers on that, because it sounds like bullshit.
Most non-tech people I know have no idea what a Nexus phone is because there is no promotion for it. Those that have a Samsung phone got one because they knew it was popular, thought it took great pictures, and loved the screen.
An Android fan plugs their SD card into their camera while on a Safari. They get back to their hut and plug the SD card into their Android devcie. The camera put pictures in the folder "Camera".
These users will be able to see the photos on their Android tablet, but they won't be able to free up space or modify any of these photos until they get to a computer. Or iPhone with an SD card accessory.
It's a crap addition that cheap people demand instead of buying phones that can hold more on flash. At least, that's the only argument I've ever heard for SD.
This really sucks.
The only hope to get rid of android/ios apps' dominance is probably on browser/html5 apps, I hope it comes sooner and our need for native apps can thus be minimized(especially its underlying forthcoming-more-proprietary environment).
Say what you want about the Newton, but it probably had the most elegant way to deal with external storage.
I keep wondering how far the lock-down on new computing devices will go. I really wish someone would build an open device even if it isn't a phone (e.g. iPod Touch).
do not restrict android mods to cyanogenmod. it is like saying "can i start apache on my system boot on debian like i did on slackware?"
what you are looking for is how to format you sd card in Ext so it can a 1st party partition. breaths new life to old phones. like the intentionally storage crippled samsung nexus
Google getting ever more evil. Their system apps can write to the external SD, but all the great 3rd party apps are screwed and constrained to the internal SD.
How does this help privacy? The data is still on the SD card, unencrypted. All apps have to store data at "/Android/Data/<Package Name>". No apps can delete data anywhere else.
This helps with unwanted orphaned files when uninstalling an app. That is pretty much it.
Resist if you like, but what are your options if not iPhone, Android, or Windows Phone? It's clear these distinct developer teams have decided direct access to removable storage is some kind of risk (whether to security, usability, or ubiquity). We're not going to reach a truly post-PC era without addressing and moving on from some of the core issues at the heart of it, one of which is the folder/file hierarchy.
I'm sorry for your loss, but it's time to adapt my friend.
You seem to be suggesting that a post-PC era is desirable, that being able to make effective use of external storage is inherently problematic and/or that data should live inside apps from the user's perspective and vanish if the app is uninstalled.
If these are your positions, please offer some support for them, as I'm not sure the rest of us see them as self-evident.
> It's clear these distinct developer teams have decided direct access to removable storage is some kind of risk (whether to security, usability, or ubiquity)
I would argue usability. Having removable storage causes you to have to handle quite a few additional issues:
* Storage is removed (while app is off/in background)
* Storage is removed (while app is active)
* Users have to understand there are two places to put things (may still exist with this)
* Users have to understand the filesystem (decades of experience says... they don't)
Let's not forget that there are tons of 2.x, 3.x, and 4.x devices that probably won't get this update. This is only going to effect devices being actively updated and new ones.
As for new ones, Flash is getting cheaper and networks are getting faster. The fact is cloud storage is getting more and more practical (assuming carriers don't ruin it). This may be a bit early, but it would have been impossible a few years ago.
All in all it seems like a relatively sane decision to move the platform further. They could have just dropped SD card support. That would have also fixed the issues.
I would argue that usability is in the eye of the user. I don't care if most users don't understand what removable storage is and won't notice or care about this change. I know what it is and how to use it, so making it effectively useless impairs my usability.
The fact is cloud storage is getting more and more practical (assuming carriers don't ruin it)
Big assumption. Also not the only one: you're assuming cloud providers can keep your data private.
Your point is null because the removable storage is still there, and has to deal with even more sudden removal modes such as leaving reception. But it's suddenly more restrictive.
So pretend the GP said > It's clear these distinct developer teams have decided direct access to a filesystem is some kind of risk (whether to security, usability, or ubiquity)
Seems like a good time to switch back to a basic Nokia and a laptop. The only people looking forward to a post-PC era are the ones tied to their smartphones.
Some of us need large screens and more processing power.
Absolutely, and in this case a laptop has a significantly different use-case from a phone. Noone's doing serious development/creative on their phone or tablet, and no doubt PCs will exist for these functions for decades more. But for making calls, casual web browsing, and music, your N900 will perform these tasks as well or worse than a iPhone or Android.
I realise @geeNoThanks might be partly trolling so I'll leave it at "different strokes for different folks"
Let's see you do anything of meaningful complexity or constructive value on such a system. Unless you replace the folder/file structure with something effectively equivalent your screwed the moment you need to do something that takes more than one app. Especially if you do that kind of work very often or need multiple people to work on the same project.
Summary:
All apps (even ones without external storage permissions) can now read and write from a designated private folder on external storage.
There's a new sharing framework called the Storage Access Framework that can be used to request access to other folders, which treats external storage in a manner similar to cloud storage.
It might be a harsh transition, but not completely surprising since it's been quite a while since Nexus devices have had external storage slots, and it's been quite obvious for a while that Google has been discouraging external storage.
The hopeful takeaway is that Google will be relaxing this discouragement now that they've figured out a strategy for external storage moving forward.