SD Card on Android 4.4 (KitKat)
(Note: If your device is running Android 5.0 or later please read SD Card on Android 5 (Lollipop)
Android version 4.4 (codename KitKat) does not allow applications you install to write to user-installed MicroSD cards. Apps can still write to the internal storage. Devices that have only internal storage naturally are not affected. Other devices, for example Samsung Galaxy and Note devices, HTC One M8, LG G Pad 8.3, Sony Xperia Z, offer their users an option to expand their storage space by installing a MicroSD card. When KitKat is installed on such devices, apps are limited to only being able to manipulate files in the built-in storage, with write access to the MicroSD card being severely restricted.
This change means a removal of functionality compared with Android 4.3. 4.3 allowed apps to write to the MicroSD card, as did all prior Android versions. The limitation introduced in KitKat does not affect the capabilities of preinstalled apps, only apps you install. Apps preinstalled by Google and device manufacturers still have this ability.
This is a system level restriction. This is how your device with KitKat installed works. Here is the official technical document describing this behavior
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. Restricting writes in this way ensures the system can clean up files when applications are uninstalled.
How this restriction in KitKat affects our app
Our app supports many sync methods. Most of them need to write to a folder in the device storage. If you configure the app to sync unwriteable folders located on the MicroSD card, sync operations will fail. There you can only use two sync methods: Upload Only and Upload Mirror. They don’t need to write to the local folder.
For some Samsung devices running specific KitKat versions we have found a workaround to bypass this restriction. The workaround may not work for your device and even if it works, it is likely to break next time you upgrade the Android system in your device. This is our best-effort attempt to help our users. If it does not work, then well, there is very little, in fact nothing, app developers can do about it. Only Google and device manufacturers can remove this restriction which they impose on third-party apps.
What you can do if your device is affected
This issue affects the MicroSD card, it does not affect the built-in internal storage. Apps can write there as they used to be able to in prior versions of Android. If you want to sync a folder on the MicroSD card and it does not work, you need to move that folder to the internal storage.
As stated in the official Android document quoted above there is one folder on the MicroSD card each app has full access. In the case of our apps it is
- /Android/data/com.ttxapps.dropsync/files (for Dropsync)
- /Android/data/com.ttxapps.drivesync/files (for Drive Autosync)
- /Android/data/com.ttxapps.onesync/files (for OneSync v1)
- /Android/data/com.ttxapps.onesyncv2/files (for OneSync v2)
- /Android/data/com.ttxapps.boxsync/files (for BoxSync)
You can sync a subfolder inside this folder. However beware that if you uninstall our app or reinstall it Android will completely delete this folder.
Normally the folder /Android/data/
Outside of this app dedicated folder you can use one-way Upload Only or Upload Mirror sync method to upload files from the MicroSD card to the server. These two sync methods only need to read files in the device. They don’t write anything to the local folder and should work fine.
If you can obtain root access on your device you can modify a system config file to remove this restriction. After that all apps would be able to write to the MicroSD card. However doing so would likely void your device warranty. If your device is already rooted you can use SDFix app to conveniently modify the config. We are not associated with SDFix. It worked for us so we think we could mention it here. Please do not contact us with requests for information on how to obtain root access and how to modify the system config. The process is different for each device and often requires technical expertise.