Homo Ludditus

Less is more and nothing is good enough


How KitKat 4.4 Killed Android — And Google Keeps Screwing Things

Tod Liebeck, founder and owner of NextApp, Inc., on his Google+ page:

KitKat will make your SD Card completely useless: per the Android API specification, apps can no longer write files to your SD card.  And Samsung is following it.

This only applies to dual-storage devices, i.e., devices with a user-writable internal flash storage AND a removable SD card.

From External Storage Technical Information:

“The WRITE_EXTERNAL_STORAGE permission must only grant write access to the primary external storage on a device. Apps must not be allowed to write to secondary external storage devices, except in their package-specific directories as allowed by synthesized permissions.”

If your device has user-accessible internal flash storage, your SD Card is a “secondary external storage device”.

What this means is that with KitKat, applications will no longer be able create, modify, or remove files and folders on your external SD card.  As a for-instance, you can no longer use a file manager to copy files from your computer to the SD card over a network.  This ability, which has existed since the beginning of Android, has been taken away.

The only stated reason for this removal of functionality is that,

“Restricting writes in this way ensures the system can clean up files when applications are uninstalled.”

I do not pretend to understand this logic.  Apps are still allowed to write in arbitrary directories on the primary storage (with the appropriate permission), but are denied the same access to external storage.

Samsung has implemented this feature with their KitKat OTA updates. [...]

In my opinion this is a horrible misstep by Google and the Android Open Source Project.  Functionality has been removed without reason, to the severe detriment of users and developers alike.

I apologize for not bringing this to everyone’s attention when KitKat 4.4 was released, but it was not mentioned in the Android 4.4 changes document.  It’s only mentioned in the article on source.android.com.  I was only made aware of its existence from user reports as a result of Samsung implementing this change in its KitKat OTA updates.

Of course, the official reason is pure bullshit. A lot of apps write in random directories in the internal storage, and nobody cleans up when they’re removed — and the internal storage is much more critical than a fucking SD card that anyone can erase or even reformat!

First, Google removed in Android 4.0+ the ability to install apps on such a “secondary storage”. Some Chinese phone manufacturers (Huawei, Alcatel = TCL, Philips = China Electronics Corporation / Shenzhen Sang Fei) have hacked an workaround that allows apps to be installed either in the internal storage, or on an added SD card, but the stock Android doesn’t allow that.

Second, Google removed in Android 4.4 the ability for an app to write in arbitrary locations on a true SD card, whereas they can do (if allowed) whatever they want in the internal storage. This is not specifically to kill file managers — although this is one major effect –, but to kill the idea of an added SD card altogether! Google wants you to buy their stupid Nexus phones, designed just like the iPhone, without any support for a SD card!

I’d like to remind you that in the times of Gingerbread, phones typically had something like 153 MB to 1 GB of internal storage, and any added SD card counted as “primary external storage”. Since ICS, most phones had either a “unified internal storage”, or an internal storage split in two partitions, one of them being a sort of an internal SD card, counting as “primary external storage” (/storage/sdcard0), so that adding a SD card would make it a “secondary external storage” (/storage/sdcard1). Now Google tries to make any added SD card impractical — so you would stop buying phones with SD card support. Only buy phones from Google, right? Android is less and less of an open system…*

Until yesterday, I’d also have said “they want you to buy Nexus or Motorola” (Moto X and Moto G both lack the SD card support), but now we all know that Lenovo will acquire the Motorola Mobility smartphone business for about $2.91 billion. That’s right, this is the same division that Google purchased in 2011 for $12.5 billion. Go figure.

What’s wrong with these huge, stupid corporations, full of business geniuses who are able to lose almost $10 billion and still fail to make a division profitable? (At a smaller scale, this reminds me of how Nokia has bought Trolltech, the maker of Qt, in 2008, fired its best people, then they’ve resold Qt to Digia, in 2012.)

Now, Google is both evil — see the way they’ve screwed KitKat — and stupid**. Larry Page’s explanations already have more than 1500 comments in a couple of hours!

On the other hand, Lenovo’s CEO said he will treat Motorola like a treasure, no plans for layoffs; that “We will not only protect Motorola brand, we will make it stronger.” Finally, the Motorola brand will be used in North and Latin Americas, while the Lenovo brand will be used in China and the emerging markets.


Now what? Some of you were happy that your Samsung or HTC device has received an update to Android 4.4. Some other people are unhappy that they’re stuck with 4.1.2, 4.2.1, or 4.3. Be careful what you wish for!

Suppose future versions of Android will get screwed even further. What should people do? Go for iOS, a closed system that’s even more restrictive, and which has only acquired true, full multitasking in the childish version 7? Opt for the retarded Windows Phone, who’s still lacking true multitasking? (Background apps are frozen aka tombstoned, except for media playing and file transfers.)

Moving for good to a tropical island without Internet becomes increasingly tempting…
*Look, Samsung will allegedly tone down on custom software on Google’s request.
**Oh, those patents? They don’t worth that much.

LATE EDIT: Android Police, on April 6: Apps Still Have A Loophole For Writing To The SD Card On KitKat, But For How Long?

The workaround that currently still works relies on Media Scanner and the use of the MediaStore class. Since the Media Store runs with system privileges, apps are able to masquerade as a system service for the purpose of writing to the SD card. Android Police adds:

Unfortunately, making use of this technique isn’t very intuitive, it’s prone to bugs, and there seems to be some unpredictable inconsistencies across devices from different OEMs. In other words, this is obviously not the way the Media Store was intended to be used. Among the devices we’ve been able to test, the Samsung Galaxy Note 3 has shown the least friction while the Google Play Edition LG G Pad 8.3 has been much more hit-and-miss. The HTC One M8 mounts the SD slot slightly differently than most devices, so the developers we’ve talked to are still looking into it.

From the file managers who are implementing this workaround, Total Commander seems to be the most successful so far, the second place being awarded to ES File Explorer. Here’s a starting point for programmers.

20 thoughts on “How KitKat 4.4 Killed Android — And Google Keeps Screwing Things

  1. JBurton

    I just tried to move pictures from my internal storage to external on KitKat using QuickPic and got this notice. I was forced to connect my phone to Windows and use file explorer to move the files.

    However, I see that the Camera app on my Galaxy Note 3 is still able to write photos to the external storage card just fine.

    So it seems it is still possible.

    1. Béranger Post author

      Camera is a privileged system app. It’s supposed to be able to save pics there. But 3rd-party apps from Google Play should fail.

    1. DamnedTorpedo

      How about the no-so-complicated 2.6bn from selling Motorola Home a year ago plus another slightly-more-complicated 2.9bn that Motorola had in cash when acquired? Or the little detail of Google keeping Motorola ATAP?

      Still thinking Google lost 10bn on the deal, even ignoring the patents and tax benefits? Take a look at how the market reacted to the news.

      Facts are complicated, I know. Let’s go blogging.

      1. Béranger Post author

        I didn’t say that Google has lost the entire difference between the two values. Cool down. But they’re still a bunch of idiots who screwed Moto.

        1. DamnedTorpedo

          I could swear that’s exactly what you said:

          “business geniuses who are able to lose almost $10 billion and still fail to make a division profitable”

          … which happens to also be the common misrepresentation coming out of some shallow news outlets.

          But yeah, if anyone got screwed it’s Motorola. Although they come out with a solid product lineup, so maybe that Google one night stand wasn’t all bad for them.

  2. Nux

    I always wondered why the hell Google’s Nexus line is built by LG instead of Motorola.
    Motorola has had quite a few nice models, almost half of my work colleagues have a Razr Maxx (unbeatable battery life, quality build).
    Moto G/X don’t look too bad either.

  3. Eric S.

    Don’t worry, Android is still way, way ahead of iOS when it comes to its support of viruses and other malware; and it’s still so insecure that to this day TiVo and Amazon haven’t been able to release an app on it. If you believe Android and Windows Mobile are any less closed than iOS, you’re completely delusional.
    Also, to claim that iOS just started to support multitasking is a completely ignorant statement. It was always multitasking (it’s Unix-based, for crying out loud) but disallowed backgrounding of third party processes. That may be irritating to some, but if you’ve ever picked up a dead Windows Mobile or Android device because some stray app drained the battery, you can understand why this design choice was made. To this day, multitasking is restrained, and it is partly responsible for Apple’s devices considerably better battery life.
    Finally, if you want to be respected, don’t use “retarded” as a put down. It’s a word bullies use. Are you a bully?

    1. Béranger Post author

      “you can understand why this design choice was made. To this day, multitasking is restrained”

      No, I can not. The user has to have a choice, should they want to have third-party background processes that are still running. This isn’t allowed (with the exceptions I’m sure you’re aware of) in Windows Phone, and this is a huge mistake. Of course, you was talking about iOS, but I cannot talk about that shit.

      What’s the next thing Google will “innovate” for the end-users’ “own good”? The impossibility to install APKs from outside Google Play? People should know if Android is becoming a sort of a Windows Phone in disguise.

  4. JW

    With the power of current phones/tablets quickly approaching the capability of entry level consumer laptop/desktops, I find it unforgivable that Android and other phone/tablet OS are so limited and restrictive that they are incapable of doing much more than their Original versions. I appreciate the impotant desire to improve security where it is lacking, I can even understand the desire to link and limit services to secure devices.
    What I cannot stand is the need to root android/iOS/winphone to run the majority of applications on the market, thee restrictions placed on devices, applications and there OS to the point where it is weorse thasn useless.
    I want to be able to use ASN Official Root Mode aka Super User Mode to add system enhancing features such as there ability to attach unsupported devices, services, external storage etc without being placed in the position that I may void the warranty.
    I want Google/Apple/Microsoft to be compelled, to have a representative public body appointed over the board of directors to ensure that these companies operated in a manner which is in the best interests of their majority of consumers, and has the power of veto where these companies do not operate accordingly.
    I want to see the end of monopolistic and dominating behaviour that all of these companies are exhibiting over global markets.
    I want them to understand that I will move all my hardware away from proprietary operating systems such as these and I will adopt a suitable full/unrestricted Linux distro such as Ubuntu.


  5. CoryD

    The app will have its own folder to have Write access to the external storage SD Card, but it is restricted to that only. It’s been around since Honeycomb. Just hasn’t been brought out to the forefront like KitKat did.

    To be exact:
    Starting in Android 4.4, the owner, group and modes of files on external storage devices are now synthesized based on directory structure. This enables apps to manage their package-specific directories on external storage without requiring they hold the broad WRITE_EXTERNAL_STORAGE permission. For example, the app with package name com.example.foo can now freely access Android/data/com.example.foo/ on external storage devices with no permissions. These synthesized permissions are accomplished by wrapping raw storage devices in a FUSE daemon.naccurate information.

    1. Béranger Post author

      To be exact, there is nothing new about writing in package-specific directories. What’s new is — I see people still don’t get it — that an app:
      – can write in any arbitrary location in the “internal SD” partition /storage/sdcard0 (or whatever is called, depending on the device)
      – can only write in its package-specific directory on the “external SD” partition /storage/sdcard1 (or whatever is called, depending on the device)

      This makes NO SENSE. On the contrary, it would make sense to restrict the access to the INTERNAL, not to the external, true, removable SD card!

      The only explanation is that the shitheads at Google want to make the physical SD card useless. Here we go, iAndroid.

      1. Alex Atkin UK

        Actually, it should be restricted on BOTH internal and external, for it to make any sense.

        It makes perfect sense that an app, without additional permissions, has somewhere on SD storage it can store large files and the user shouldn’t have to worry that in order to do that it has permission to access potentially sensitive data on their phone. The permissions on Android definitely do still need refining and this is a good start.

        What is NOT acceptable however is that you should still be able to flag TRUSTED apps (eg file managers) as having full access to all storage.

        Now I get why they did it, because these new permissions are otherwise useless as all apps that needed storage have already requested full permissions to access SD cards. But what would make more sense there would be to block all current apps that have full permissions from installing on KitKat and demand developers add the correct permission level, refusing any apps that have no good reason for needing full access but are requesting it.

        The problem is they are trying to force security onto people who might very legitimately be using Android devices in a way where security is not an issue. If I want to run a web/ftp server on my phone I should be able to specify which directory the app can access, not have Google make that decision for me. There are many options, they chose the crap one. Its not going to help security as ultimately it will just force more people to root their phones and open up even more security holes.

    2. ruslan

      “For example, the app with package name com.example.foo can now freely access Android/data/com.example.foo/ on external storage devices with no permissions.”
      So, I’m trying to do that. I learnt that I can place movie files in extSdCard/data/media and it works (movies placed elsewhere on sdcard cannot by be opened by anything due to “problems with codecs”).
      But I cannot make it work for Tunesync (syncing iTunes’ playlists with Android). The app allows to specify a store location. It’s default folder is called Music, the package name: com.highwindsoftware.tunesync. I’ve tried every combination of Music/tunesync/com.highwindsoftware.tunesync in both extSdCard/data/media and extSdCard/data but I just get the message that “tunesync was unable to write to the selected location”. Any ideas?


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>