How can I use my external SD card for offline maps?

One of the new “features” of Android 4.4 (KitKat) is that applications can no longer use the external SD card as a generic storage volume and read/write everywhere. There are valid security reasons for the change, but the way Google has done this breaks many apps and doesn’t provide a clear way to do things right for application developers.

In the case of MyTrails, it means that if you want to store your offline maps on your external SD card, you’ll have to jump through a few hoops:

  • If your device is rooted, you can use a free app like SDFix to revert to a fully-writable SD card
  • If your device is not rooted, there is only one folder that MyTrails can write to on the external SD card: /storage/sdcard1/Android/data/com.frogsparks.mytrails (this path may be slightly different if you’re using the preview version of MyTrails, or your device mounts the SD card to a different location within /storage; some devices use /storage/extSdCard/)

Please note the following caveats (if your device is not rooted):

  • you can not share the same offline maps between the official and preview versions of MyTrails
  • if you uninstall MyTrails, your offline maps will be deleted (this is by design, part of the reason Google make this change in KitKat), unless you use a privileged file manager (one that comes as part of your device’s default software) to move them beforehand

On recent versions of Android, even the internal storage may no longer be accessible to MyTrails. One location that should always be available is /sdcard/Android/data/com.frogsparks.mytrails. This is the offline location you should use if all else fails. Warning: that location is deleted by Android when you uninstall MyTrails!

Alternately, you can use the standard Android file picker with MyTrails, which makes it possible to load and save GPX files from anywhere. Enable it by turning off Use internal file picker in MyTrails > Preferences > Other.

Liked this post? Follow this blog to get more.