Why your SD card doesn't work the same in Android 4.4 KitKat, and the reasons for the change
“Curse you, Google! Your KitKat update broke my SD card!”
Poke around the Android section of the Internet and you’ll hear something similar. Users like you and me are in an uproar because they updated their phone to Android 4.4 KitKat, and now the SD card support has changed. Apps no longer work, folks have problems with cameras and music players, and while everyone else is saying “Oh, yeah. That’s how it works now,” nobody warned them in advance before they grabbed that update.
There is a lot of push against these changes, with petitions and threats of grassroots movements that threaten to show Google the error of its ways — even a very popular developer that I won’t name has their PR people sending out requests for blogs to write about evil Google.
But, as always, there's a method to Google's madness. Let's discuss.
What changed in Android 4.4 KitKat with SD cards??
It’s simple, really. Prior to Android 4.4 KitKat, applications — provided they had permission to access the SD card — could read and write to any area on removable storage, including the system folders like DCIM, Alarms, etc. That has all changed, and now third-party applications — as in ones you download from Google Play or elsewhere — can only write to files and folders that they have created or have taken ownership of.
Google made things neater and more secure. Some apps have worked with that, many others are just broken.
This keeps things "tidy." Apps aren't dumping files everywhere on the card — something we've all encountered — and instead have one central location to put all their files. There also are some serious security concerns that were addressed by not letting an app write files just anywhere.
This means that Jerry’s Awesome Photo Viewer app can still scan your entire system for images, build a thumbnail database of them all and save it to a folder on the SD card. But it can’t move or save the pictures themselves to folders — including the Pictures folder — on the SD card because it does not “own” those folders. If programmed right, it could save copies of the pictures to Jerry’s Awesome Photo Viewer’s own folders on the SD card. The folder is part of the app, and if you uninstall it, the folder goes, too. The old method of putting anything anywhere you want is gone, forever.
The other side of the coin is that Jerry’s Not Awesome App that steals your data no longer has write access to every file and folder on the SD card. Yes, previously any application that declared permission to read and write to the SD card was allowed to write files to any folder — including your system folders, and any folder something like a banking app might have made. Any type of file, too. That includes files that could be read when another app starts up and affect the settings or way that app works. It was a complete and total security nightmare, and why a lot of people — including yours truly — did not want phones with SD cards.
Do you want it easy? Or do you want it secure?
One of the reasons things have to change so drastically on the security-front is because of Unix-style user and group permissions, and the file system of your SD card. You expect an SD card to just work when you plug it into a computer. Any computer. Because something like 96 percent of all the computers out there that aren’t some sort of server run Microsoft Windows, you need to make sure your SD card will work with them.
If you want removable storage that can be read anywhere, understand that it's not going to be secure.
FAT-based file systems — that's what your SD card is formatted to — are universal on Windows, Apple OSX and (most) Linux machines. Makes sense. What good is a portable drive that can't be read, right? But there's a catch. FAT-based systems don't support file and folder permissions. If I'm an app, I can't say “This is my folder. I will allow you to look inside, but you are not to put anything new in there or change any of my stuff!” on this sort of file system. It’s an all-or-nothing mess, and one that even Microsoft has moved away from in its newer versions of Windows. But FAT still needs to be used, because anything else will require a lot of finagling for people using legacy versions of Windows, and that is a large number of people.
Note that this has nothing to do with accessing your phone storage — internal or external — via a cable attached to your computer. That uses a completely different protocol and method, that has nothing to do with the actual file system of a removable piece of media.
If SD cards were set up with the same file system as the rest of the partitions inside your Android (EXT, for those of you keeping track at home), none of this would matter. Third-party apps could be given permission to individual folders, other folders could be marked “hands-off,” and everyone would be happy. But they are not, and can not be without modification of a lot of computers, or a stand-alone program you run on your computer just to access the SD card you pull out of your Android.
This is a mess that nobody can fix right now.
So what do we do?
First off, you stop and think before you take any update to KitKat. Any apps installed to the SD card will lose their data when you update and need re-installed, and some of the apps you use probably will stop working because they have not been updated. The good news is that other apps have been updated — PocketCasts, for example — so you get to try all new apps.
Forgoing the KitKat update is an option, but not one we'd recommend.
You could also never update to KitKat, which I see a lot of people claiming they have planned. I think that’s a bit crazy, but it is an option and it will keep things working like they always have — both the good and the bad — in regards to your external storage.
Or you can install a custom ROM that “fixes” the issue. It’s a fairly easy thing to change, but the folks who make your phone aren’t allowed to “fix” it or they can’t retain their Google certification for Google Play and the rest of Google’s apps.
Or you can huff and puff, and start a petition.
Remember, Android — whether we like it or not — is a work in progress. Google could very well have some sort of magic fix for this whole problem planned, and we'll see it in a future version of Android. Or it could just not care and take the stance that SD cards should only be used to store media, and should be kept seperate from the operating system.
We'll just have to see.