2

请让我知道Downloads有和没有 SD 卡的设备上文件夹的默认位置是什么。

以及如何检查特定手机是否没有 SD 卡。

4

2 回答 2

10

要检查设备是否有 SD 卡,请使用:Environment.getExternalStorageState()如果您没有 SD 卡,请使用:Environment.getDataDirectory()

本质上,如果没有 SD 卡,您可以在本地设备上创建自己的目录。我列出了一些可能有帮助的代码:

/*
             * This sections checks the phone to see if there is a SD card. if
             * there is an SD card, a directory is created on the SD card to
             * store the test log results. If there is not a SD card, then the
             * directory is created on the phones internal hard drive
             */
                    //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

希望这可以帮助。

于 2012-07-05T20:13:48.893 回答
1

我不知道内部下载位置。

要以编程方式获取外部下载位置,请使用:

Environment.getExternalStorageDirectory()+"/Downloads/"

或者至少,我的 HTC EVO 4G 就是这样。

对于我的应用程序,我开发了一个简单的类来检测 SD 卡的当前状态,并简化为人类可以理解的术语。它可以很容易地使用

Environment.getExternalStorageState()

并将其与Environment类下定义的各种默认状态进行比较。重要的是Environment.MEDIA_REMOVEDEnvironment.MEDIA_SHARED。第一个(我相信)告诉您是否有任何外部存储,第二个告诉您它是否已安装。

注意:比较状态时,使用 .equals 因为它们是字符串,而不是像 Android 中的大多数状态对象那样的整数。

于 2012-07-05T20:19:58.317 回答