java - Android:下载到 SD 时出现问题

标签 java android android-sdcard

我开发了一个应用程序,用户可以在其中从服务器下载 .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/

相关文章:

android - Flutter SocketException : OS Error: No route to host, errno = 113,地址 = xxxx,端口 = 42376

android - 从存储中删除未使用的文件

java - 带有大表的 setMaxResults 使用太多内存

java - Spring MVC : Failed to convert property value of type String to Integer

java - 更快的算法来找到斐波那契 n mod m

android - 获取 fragment 中的当前位置

android - 在不同线程上的 ListView 中加载图像的安全、标准方法?

android - 无法在外部 SD 卡 (Lollipop) 中创建目录

android - 如何从 SD 卡中删除文件

java - 调用java类时字符被替换