Please let me know what are default locations for Downloads folder on devices with and without SD card.
And how can I check if particular phone doesn\'
I do not know the internal download location.
To programmatically obtain the external download location, use:
Environment.getExternalStorageDirectory()+"/Downloads/"
Or at least, that is what is it on my HTC EVO 4G.
For my app, i developed a simple class that detected the current state of the SD Card, simplified into human-understood terms. It can be easily done using
Environment.getExternalStorageState()
and comparing it to the various default states, defined under the Environment class. The important ones are Environment.MEDIA_REMOVED and Environment.MEDIA_SHARED. The first (i believe) tells you if there is any external storage at all and the second tells you if it is mounted or not.
Note: when comparing the states, use .equals as they are strings, not integers like most state objects in Android.
To check and see if a device has an SD card, you use: Environment.getExternalStorageState() if you don't have an SD card, you use: Environment.getDataDirectory()
Essentially, if there is no SD card, you can create your own directory on the device locally. I've listed some code that might help:
/*
* 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
Hope this helps.