请让我知道Downloads
有和没有 SD 卡的设备上文件夹的默认位置是什么。
以及如何检查特定手机是否没有 SD 卡。
要检查设备是否有 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
希望这可以帮助。
我不知道内部下载位置。
要以编程方式获取外部下载位置,请使用:
Environment.getExternalStorageDirectory()+"/Downloads/"
或者至少,我的 HTC EVO 4G 就是这样。
对于我的应用程序,我开发了一个简单的类来检测 SD 卡的当前状态,并简化为人类可以理解的术语。它可以很容易地使用
Environment.getExternalStorageState()
并将其与Environment
类下定义的各种默认状态进行比较。重要的是Environment.MEDIA_REMOVED
和Environment.MEDIA_SHARED
。第一个(我相信)告诉您是否有任何外部存储,第二个告诉您它是否已安装。
注意:比较状态时,使用 .equals 因为它们是字符串,而不是像 Android 中的大多数状态对象那样的整数。