如何获得外部存储的路径?

soo*_*noo 7 android

我正在尝试将文件写入手机.

我曾经Environment.getDataDirectory()知道内部存储的路径并Environment.getExternamStorageDirectory()知道外部存储的路径.

但是当我使用Environment.getExternalStorageDirectory()路径时,文件是在内部存储中创建的.当我使用Environment.GetDataStorage()路径时,文件不会被创建.(这不确定,但我至少在资源管理器应用程序中找不到.)

我认为我的手机的内部存储被视为外部存储.(在我的情况下,它有32GB的存储空间)

我想知道可移动存储(例如micro SD card)路径.我该怎么办?

小智 8

来自getExternalStorageDirectory()的官方文档

不要在这里混淆"外部"这个词.此目录最好被视为媒体/共享存储.它是一个文件系统,可以容纳相对大量的数据,并在所有应用程序之间共享(不强制执行权限).传统上,这是一张SD卡,但它也可以作为与受保护的内部存储不同的设备中的内置存储实现,并且可以作为文件系统安装在计算机上.

因此,它可能与设备中的内置存储不同.

对于您的情况您可以使用getExternalStoragePublicDirectory(java.lang.String)

这是用户通常放置和管理自己文件的地方

此处的路径应为DIRECTORY_MUSIC,DIRECTORY_PODCASTS,DIRECTORY_RINGTONES,DIRECTORY_ALARMS,DIRECTORY_NOTIFICATIONS,DIRECTORY_PICTURES,DIRECTORY_MOVIES,DIRECTORY_DOWNLOADS或DIRECTORY_DCIM之一.不能为空.

或者,如果您希望在用户卸载应用程序时删除数据,则可以使用getExternalFilesDir()

由于这些文件是应用程序的内部文件,因此用户通常不会将其视为媒体.

getFilesDir()getExternalFilesDir()之间也存在一些差异

  1. 外部文件并非始终可用:如果用户将外部存储装入计算机或将其删除,它们将消失.有关存储状态的信息,请参阅环境中的API.

  2. 这些文件没有强制执行安全性.例如,任何持有WRITE_EXTERNAL_STORAGE的应用程序都可以写入这些文件.