我开发了一个应用程序,用户可以在其中从服务器下载 .mp3 文件。并预先定义了 mnt/sdcard/foldername 的路径来保存此类文件。我已经在 HTC、LG、三星上运行了我的程序,运行得很好,但是当我在三星 Galaxy s2 上运行相同的程序时,遇到了无法在 mnt/sdcard/foldername 中写入(存储)的问题,并尝试了
Environment.getExternalStorageDirectory().getAbsolutePath()
但它显示给定路径中下载的文件名以及每个文件属性的零字节。有办法解决这个问题吗?
最佳答案
SG2 通常没有 SD 卡,并使用内部闪存作为“外部”存储。我已经用这段代码解决了这个问题:
private File initCacheDir() {
String sdState = android.os.Environment.getExternalStorageState();
File imageCacheDir;
if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
File sdDir = android.os.Environment.getExternalStorageDirectory();
imageCacheDir = new File(sdDir, "Android/data/" + App.PACKAGE_NAME + "/files/imageCache");
}
else
imageCacheDir = context.getCacheDir();
if(!imageCacheDir.exists())
imageCacheDir.mkdirs();
return imageCacheDir;
}
请注意,此代码为您提供缓存目录的位置,该目录通常位于 SD 卡上的 Android/data 文件夹中。
您可以在此处找到如何使用 SG2 解决此问题的更多详细信息: How could i get the correct external storage on Samsung and all other devices?
关于java - Android:下载到 SD 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090511/