如何获取android中的内部和外部sdcard路径

Mah*_*ban 18 android file android-sdcard android-file

大多数新的Android设备都有内部SD卡和外部SD卡.我想制作一个文件浏览器应用程序,但我无法找到如何获取在我的应用程序中使用的路径,因为

File file = Environment.getExternalStorageDirectory();
Run Code Online (Sandbox Code Playgroud)

只是在大多数设备中返回,/mnt/sdcard 但是另一个外部SD卡的路径就像/storage1 or /storage2 .任何帮助赞赏.

AnV*_*AnV 9

如何获取android中的内部和外部sdcard路径

存储在内部存储中的方法:

File getDir (String name, int mode)

File getFilesDir () 
Run Code Online (Sandbox Code Playgroud)

上述方法存在于Context课堂上

存储在手机内存中的方法:

File getExternalStorageDirectory ()

File getExternalFilesDir (String type)

File getExternalStoragePublicDirectory (String type)
Run Code Online (Sandbox Code Playgroud)

一开始,每个人都使用Environment.getExternalStorageDirectory(),这指向了手机内存的根源.结果,根目录充满了随机内容.

后来,添加了这两种方法:

Context他们在课堂上添加getExternalFilesDir()了一个指向手机内部存储器上特定于应用程序的目录.卸载应用程序时,将删除此目录及其内容.

Environment.getExternalStoragePublicDirectory()用于集中存储着名文件类型的地方,如照片和电影.卸载应用程序时,不会删除此目录及其内容.

存储在可移动存储中的方法即微型SD卡

在API级别19之前,没有正式的方法存储在SD卡中.但许多人可以使用非官方API来做到这一点.

正式地,ContextAPI级别19(Android版本4.4 - Kitkat)中引入了一种方法.

File[] getExternalFilesDirs (String type)
Run Code Online (Sandbox Code Playgroud)

它返回应用程序可以放置其拥有的持久文件的所有共享/外部存储设备上特定于应用程序的目录的绝对路径.这些文件是应用程序的内部文件,通常不会被用户视为媒体.

这意味着,它将返回Micro SD卡和内部存储器的路径.通常,第二返回路径将是微SD卡的存储路径.

根据Google /官方Android文档,内部和外部存储术语与我们的想法完全不同.


Com*_*are 0

但其他外部 SD 卡还有另一个路径,例如 /storage1 或 /storage2

Android SDK 中(至少在 Android 4.1 中)没有任何内容可以让您访问这些路径。无论如何,您的应用程序可能无法读取或写入它们。此类存储位置的行为及其用途取决于设备制造商。

  • @Ma7moudHatem:Android SDK 中没有任何内容(至少在 Android 4.1 中如此)可以告诉您“设备是否通过代码具有内部和外部 SD 卡”。 (2认同)