Search code examples
androidfilestoragepublicinternal

Saving public files in the internal storage


I have an application that saves files downloaded from a server. These files are not private to my application and should be accessible to other applications as well. I want to know what would be the correct path to save these files when the SD card is ABSENT. For the SD card, there is the well known API -

getExternalStorageDirectory()

For the application's private data in the internal memory there is -

Context.getFilesDir()

On some devices, the internal memory is represented by /emmc/.

It will be really helpful if someone could elaborate on /emmc/. I know it stands for embedded Memory card and is not present in all the devices. But is it really representative of the internal memory? Or is it the third memory?

Should I save the files using openFileOutput() with MODE_WORLD_READABLE?


Solution

  • On some devices, the internal memory is represented by /emmc/.

    /emmc/ may exist on some devices, and it may be internal, but it may not be accessible to applications, and it certainly is not part of the Android SDK unless that happens to be what getExternalStorageDirectory() returns.

    But is it really representative of the internal memory?

    No.

    Or is it the third memory?

    Ask your device manufacturer.

    Should I save the files using openFileOutput() with MODE_WORLD_READABLE ?

    That is impossible to answer in the abstract. You say that your files "should be accessible to other applications as well", but you have not indicated why you expect any other application to care one bit about your files. Other applications will not be scanning your directories for files -- at best, they will allow users to browse external storage. The only reason to have a file that is MODE_WORLD_READABLE is if your application will be triggering another application to do something with the file (e.g., ACTION_VIEW Intent).