-1

У меня только что возникла проблема, которую я не могу исправить самостоятельно.Невозможно сохранить загруженные файлы на Android 6.0 +

Ключевым элементом этого приложения загрузки и хранения файла из URL, для которого я использую расширение AsyncTask

Этот файл в конечном счете, сохраненную в

Environment.getExternalStorageDirectory().toString() + "/" + fileName + ".xls")

затем создается файл:

File file = new File(Environment.getExternalStorageDirectory().toString() + "/" + fileName + ".xls");

и Strea м выполнен

InputStream is = new FileInputStream(file); 

В этот момент я получаю FileNotFoundException ENOENT: нет такого файла или каталога.

У меня есть соответствующие разрешения установить в моем файле AndroidManifest.xml

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

Environment.getExternalStorageState() возвращает "установленный" значение.

И я могу подтвердить подключение к Интернету, так как до этого я могу скачать любые файлы, мне нужно войти в систему с соответствующими учетными данными в приложении.

Я делаю это приложение для API 16, Android 4.1 (Jelly Bean). Любая помощь будет принята с благодарностью!

EDIT: Мне удалось сделать эту работу на Samsung SM-G800G (Android 5.1.1, API 22). Но приложение не будет работать на моем Nexus One (Android 6.0, API 23) и SAMSUNG SM-G900F (Android 6.0.1, API 23).

Так что, определенно, что-то происходит с тем, как версии Android влияют на загрузку, я изучаю ее прямо сейчас.

+1

Вы использовали file explorer для проверки того, был ли файл загружен или нет? – TSR

+0

У меня есть, но никаких признаков файла нет. –

+0

Вероятно, загрузка в порядке, но сохранение в файл нет. Вы должны немедленно проверить, существует ли файл. Не позже. У Probabky у вас есть незаметные исключения и никакого кода в блоках catch. – greenapps

ответ

1

Спасибо за вклад каждого, вопрос был в другом месте, чем я думал, и теперь может быть легко гугле.

Спасибо идет к this post по MetaSnarf

Проблема действительно с пути, как Android 6.0+ (API 23+) обрабатывает разрешения.

Ввод <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> в файле AndroidManifest.xml является НЕДОСТАТОЧНО для приложения, чтобы получить разрешение. Я исправил его, добавив следующий код в свой код.

if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { 
      } 
      else { 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
      } 
     } 
1

пытаются заменить:

`Environment.getExternalStorageDirectory().toString()` 

с

`Environment.getExternalStorageDirectory().getAbsolutePath()` 
+0

К сожалению, никаких изменений нет. –

Смежные вопросы