Export & eMail

Overview

Import & export - exchange files - see also the integrated eMail options (for your convenience)

Requirements

  • File System related Permissions: WRITE_EXTERNAL_STORAGE & READ_EXTERNAL_STORAGE

Some General Notes

With Android 11 / SDK30 (and the Google Play Store requirement to support SDK30 since November 2021) it has become quite complicated to export files.

I can fully understand the motivation from Google behind the changes with SDK30 - but it makes it quite complicated for existing users to understand, why it’s no longer possible to do what had been so convenient in the past few years. The general train of thought is, that Apps should only be able to access their own files and directories. This situation is quite similar to iOS - with the only difference that the iOS users are used to this since day one.

Nevertheless, I’ll stop whining here - I just felt the need to explain the reasons behind the exporting/importing changes - and that I did not have the intention to ruin your life when I released GPSLogger 2.0.0.195.

Access exported files in the share folder

As just stated in the general notes it has become quite difficult for a normal app like GPSLogger to get read/write access on none default application folders.

A brief (simplified) introduction to storages on Android

Internal application storage

This storage is only available for the app - it’s typically part of your device built in storage, and it’s not accessible for the user (if the device is not rooted - but that’s a totally different story anyhow).

External application storage

By calling the storage external you might already think, that this means an external/additional SD-Card - but this is not the case for Android - Every storage that is not internal is labeled as external. So even Android devices without an extra SD-Card slot have an external storage. To the best of my knowledge this internal external storage is labeled as emulated or embedded storage/sd-card (or a combination) in most cases.

Permissions to access external storage

When you want to read/write the external Storage the app needs to request additional permissions from the user - these permissions are called READ_EXTERNAL_STORAGE & WRITE_EXTERNAL_STORAGE. The app requests both permissions on application start. It’s up to you to grant or deny these permission requests - but obviously without the permission to access the external storage it’s impossible for the app to create a file that you could access afterwards.

It’s correct that when you as a user grant EXTERNAL_STORAGE read & write access that the app would have the possibility to scan the complete content of the external storage and use it for what-ever-you-might-think-of.

YES that thought is correct - the app would have this possibility. But this is not the case - the app does not do anything like that, please see also my motivation to develop this app and provide it for free.

The fear that the app could be a potential, hidden data collector is anyhow minimized with Android11 / SDK30, since then the OS restricts the access drastically as described above.

ALL Versions

All exports will be stored in a folder called share - the location of this folder depends on your Android Version, on the version of the app you are using, as well on the GPSLogger application settings. Yes this is a nightmare!

Ok let’s tackle the GPSLogger application settings first.

If your device supports multiple external storages (e.g. the Emulated external and an additional SD-Card), then you have the opportunity via the Application Settings > Storage Settings > Storage Location for Path & Map Data to select the external storage the app should use (see also External application storage).

If you don’t have an additional external SD-Card (probably in most cases), then this setting does not have any effect for the export functionality.

So ok let’s now have a look at the different application version, but one final note before that, the different folder locations have the [storage_root] in common. The location of this storage_root1 can varray from device to device from manufacture to manufacture (and obviously from the external storage that you have configured).

Since GPSLogger v2.0.0.204

[storage_root]/Android/media/com.emacberry.gpslogger/share

This folder should be accessible from other applications (like file-managers or email clients). BUT It is important to know - that this folder, and it’s complete contents will be removed when you are uninstalling the application from your device.

Between v2.0.0.195 and v2.0.0.204

This hopefully becomes obsolete quite soon - between November 2021 and February 2022 a suboptimal version of GPSLogger was released.

[storage_root]/Android/data/com.emacberry.gpslogger/files/share

Unfortunately this folder is only accessible by GPSLogger itself and very few others apps (excluding Googles own Files application). You can access this folder for sure, by connecting your phone via a USB cable with your PC/Mac and then browse into the folder with the Explorer/Finder.

You might be able to access this folder with an app that is listed in OS Settings > Apps > Special app access > All files access apps. But even then, there is no guarantee that an app with this special right will show you the content of the [storage_root]/Android/data/ folder or any of its children.

It is important to know - that this folder, and it’s complete contents will be removed when you are uninstalling the application from your device.

Before GPSLogger v2.0.0.195

[storage_root]/GPSLogger II

Big sigh that was just so easy and convenient to use - but it’s no longer possible for an application to read or write in such global folders.

This folder will not be removed when you are uninstalling the application from your device. That was one of the reasons why it was so convenient to use.

File formats

KML [Keyhole Markup Language]

FIT [Flexible and Interoperable]

GPX (v1.0)

GPX (v1.1)

CSV

GPS NMEA-Sentences as TXT

UUID 0x’s as CSV

JSON (GPSLogger2)

Original GPSLogger II GPL


  1. The actual location on your device of the storage_root can vary from device to device - please find some examples here (but have in mind that they are just examples):

    • /sdcard/
    • /storage/emulated/
    • /storage/self/primary/
    • /storage/E5B1-1917/ (a real external SD-Card)
    • /mnt/sdcard/
    • /misc/android/ (e.g. used on BlackBerry 10)

Version: 2023/03/19