Skip to content

Instantly share code, notes, and snippets.

@chulman444
Created June 2, 2018 11:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save chulman444/fa1bf79bdaa2ab898ff9e276e8f7bb9b to your computer and use it in GitHub Desktop.
Save chulman444/fa1bf79bdaa2ab898ff9e276e8f7bb9b to your computer and use it in GitHub Desktop.
For some reason, Android file methods confused me, so I just decided to test all outputs and post it here
Environment.getExternalStorageDirectory()
- /storage/emulated/0
Environment.getExternalStoragePublicDirectory("") // Error on `null`
- /storage/emulated/0
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
- /storage/emulated/0/Pictures
getExternalFilesDir(null) // Parameter "" returns the same
- /storage/emulated/0/Android/data/com.nowhere.testexternalstorage/files
getExternalFilesDir(Environment.DIRECTORY_PICTURES)
- /storage/emulated/0/Android/data/com.nowhere.testexternalstorage/files/Pictures
getExternalFilesDirs(null) // Parameter "" returns the same
- /storage/emulated/0/Android/data/com.nowhere.testexternalstorage/files
- /storage/6363-3466/Android/data/com.nowhere.testexternalstorage/files
getExternalMediaDirs()
- /storage/emulated/0/Android/media/com.nowhere.testexternalstorage
- /storage/6363-3466/Android/media/com.nowhere.testexternalstorage
getExternalCacheDirs()
- /storage/emulated/0/Android/data/com.nowhere.testexternalstorage/cache
- /storage/6363-3466/Android/data/com.nowhere.testexternalstorage/cache
getDir("", 0)
- /data/user/0/com.nowhere.testexternalstorage/app_
getDir("somename", 0)
- /data/user/0/com.nowhere.testexternalstorage/app_somename
getFilesDir
- /data/user/0/com.nowhere.testexternalstorage/files
getCacheDir
- /data/user/0/com.nowhere.testexternalstorage/cache
getDataDir: Throws Error `java.lang.NoSuchMethodError: No virtual method getDataDir()Ljava/io/File; in class Lcom/nowhere/testexternalstorage/MainActivity; or its super classes (declaration of 'com.nowhere.testexternalstorage.MainActivity' appears in /data/app/com.nowhere.testexternalstorage-2/split_lib_slice_4_apk.apk)`
@chulman444
Copy link
Author

Wow. There is pattern.

getExternalBlahDir: /storage/emulated/0/Android/data/com.name.packname/Blah

getBlahDir: /data/user/0/com.name.packname/Blah

Environment.getExternalStorageBlah: /storage/emulated/0

Non-Environment class, that is, context methods return a path with com.name.packname in it.

So ... if you want a directory with your project name on it in the internal storage (in File explorer or Nautilus in Ubuntu), use Environment.getExternalStoragePublicDirectory("YOUR PROJECT NAME")?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment