Android 获取getExternalFilesDir()子路径的最佳方法是什么?

Android 获取getExternalFilesDir()子路径的最佳方法是什么?,android,Android,getExternalFilesDir(type)返回主“外部”存储器上的路径。我需要我的应用程序将文件存储在真正的外部存储器(即SD卡)中,但我仍然希望为应用程序数据使用正确的目录结构。获取相对于存储目录的子路径的最佳方法是什么 我目前正在这样做: // for type = Environment.DIRECTORY_MUSIC // extPath = "/storage/emulated/0/Android/data/com.example.app/files/Music" String

getExternalFilesDir(type)
返回主“外部”存储器上的路径。我需要我的应用程序将文件存储在真正的外部存储器(即SD卡)中,但我仍然希望为应用程序数据使用正确的目录结构。获取相对于存储目录的子路径的最佳方法是什么

我目前正在这样做:

// for type = Environment.DIRECTORY_MUSIC
// extPath = "/storage/emulated/0/Android/data/com.example.app/files/Music"
String extPath = context.getExternalFilesDir(type).toString();
int extStoragePathLen = Environment.getExternalStorageDirectory().toString().length();
// subPath = "/Android/data/com.example.app/files/Music"
String subPath = extPath.substring(extStoragePathLen, extPath.length());
File sdCardPath = new File(getRealExternalStorageDirectory(), subPath);

注意:我没有使用
Context.getExternalFilesDirs(type)
,因为它只适用于SDK>=KitKat,因此在KitKat成为当今最老的Android版本之前,它可能在未来5或6年内无法使用。

您的解决方案看起来不错,但什么是
getRealExternalStorageDirectory()
为什么需要覆盖android希望将文件放在的位置?不要忘记,很多设备都没有SD卡插槽。
getRealExternalStorageDirectory()
是一种返回辅助存储或SD卡(如果可用)路径的方法。如果没有sd卡存在或可用,它实际上会返回到模拟的外部目录。我的应用程序是一个自定义的侧加载应用程序,我们几乎总是在带有SD卡的设备上进行侧加载安装。未正确支持真正的外部存储,因此没有“正确的”
/Android/data/
路径。您可能是SD卡上唯一使用此路径的应用程序。它也只是在Android中硬编码到Android data+
context.getPackagename()
@zapl,当我说“正确”时,我只是指API在当前设备上返回的任何路径。