如何获取我的Android设备内部下载文件夹路径

And*_*rey 17 storage android internal download

有可能获得Android设备的内部下载文件夹路径吗?

Din*_*ris 33

如果设备有SD卡,您使用:

Environment.getExternalStorageState() 
Run Code Online (Sandbox Code Playgroud)

如果您没有SD卡,请使用:

Environment.getDataDirectory()
Run Code Online (Sandbox Code Playgroud)

如果没有SD卡,您可以在本地设备上创建自己的目录.

    //if there is no SD card, create new directory objects to make directory on device
        if (Environment.getExternalStorageState() == null) {
                        //create new file directory object
            directory = new File(Environment.getDataDirectory()
                    + "/RobotiumTestLog/");
            photoDirectory = new File(Environment.getDataDirectory()
                    + "/Robotium-Screenshots/");
            /*
             * this checks to see if there are any previous test photo files
             * if there are any photos, they are deleted for the sake of
             * memory
             */
            if (photoDirectory.exists()) {
                File[] dirFiles = photoDirectory.listFiles();
                if (dirFiles.length != 0) {
                    for (int ii = 0; ii <= dirFiles.length; ii++) {
                        dirFiles[ii].delete();
                    }
                }
            }
            // if no directory exists, create new directory
            if (!directory.exists()) {
                directory.mkdir();
            }

            // if phone DOES have sd card
        } else if (Environment.getExternalStorageState() != null) {
            // search for directory on SD card
            directory = new File(Environment.getExternalStorageDirectory()
                    + "/RobotiumTestLog/");
            photoDirectory = new File(
                    Environment.getExternalStorageDirectory()
                            + "/Robotium-Screenshots/");
            if (photoDirectory.exists()) {
                File[] dirFiles = photoDirectory.listFiles();
                if (dirFiles.length > 0) {
                    for (int ii = 0; ii < dirFiles.length; ii++) {
                        dirFiles[ii].delete();
                    }
                    dirFiles = null;
                }
            }
            // if no directory exists, create new directory to store test
            // results
            if (!directory.exists()) {
                directory.mkdir();
            }
        }// end of SD card checking
Run Code Online (Sandbox Code Playgroud)

在manifest.xml上添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

快乐的编码..

  • 这个答案非常令人困惑。当问题是内部存储时,为什么给出外部存储的答案?当问题只是目录位置时,为什么答案是一堆代码?我发现这个答案正在寻找内部下载文件夹的位置。答案不应该看起来像/path/to/folder吗? (3认同)

小智 12

要在应用程序的内部存储上查找位置,请使用在任何上下文(例如您的Activity )上调用的getFilesDir()来获取File对象.

为什么不能使用Environment.getExternalStorageDirectory()从代码中获取/ storage/sdcard0/path?

还需要添加权限.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

希望你能得到你的解决方案......

  • 问题是关于内部存储,而不是外部。 (3认同)