Следующий код, который состоит из загрузки файла с сервера и сохранения его в хранилище, отлично работает, когда устройство имеет внутреннее хранилище.
Но когда я попробовал это с устройством без внутреннего хранилища, только с внешним хранилищем я получаю следующее исключение.
java.io.filenotfoundexception open failed eacces (разрешение отклонено) на устройстве
java.io.FileNotFoundException Не удалось открыть EACCES (доступ запрещен)
public void downloadFile(String dlUrl, String dlName) {
int count;
HttpURLConnection con = null;
InputStream is = null;
FileOutputStream fos = null;
try {
URL url = new URL(dlUrl);
con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.connect();
is = url.openStream();
String dir = Environment.getExternalStorageDirectory() + Util.DL_DIRECTORY;
File file = new File(dir);
if(!file.exists()){
file.mkdir();
}
Util.LOG_W(TAG, "Downloading: " + dlName + " ...");
fos = new FileOutputStream(file + "/" + dlName);
byte data[] = new byte[1024];
while((count = is.read(data)) != -1){
fos.write(data, 0, count);
}
Util.LOG_D(TAG, dlName + " Download Complete!");
} catch (Exception e) {
Util.LOG_E(TAG, "DOWNLOAD ERROR = " + e.toString());
bServiceDownloading = false;
}
finally{
try {
if(is != null)
is.close();
if(fos != null)
fos.close();
if(con != null)
con.disconnect();
} catch (Exception e) {
Util.LOG_E(TAG, "CLOSE ERROR = " + e.toString());
}
}
}
И в файле манифеста I имеет следующее:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Я попробовал много предложения в StackOverflow пока ничего не работают.
Любые предложения, что может быть причиной? Кстати Environment.getExternalStorageDirectory() возвращает/шоссе/SDCard/ и file.mkdir() возвращают ложь.
попробуйте с файлом File = new File (dir + "/" + dlName); ' –
результат тот же, к сожалению. Btw file.mkdir() возвращает false, вот что я думаю. @PankajKumar –
Если вы отлаживаете эмулятор, убедитесь, что ваша созданная SD-карта поддерживает .. или если реальное устройство удостоверяется, что sd-карта присутствует (устройство не подключено к USB) –