Я пытался выяснить, почему приложение, которое я использую, не может загрузить файл (через диспетчер загрузок). С помощью примера кода я сузил его до того, что приложение не может создавать или получать доступ к своей собственной директории внешних файлов на устройстве, на котором я прошил собственное ПЗУ, в то время как то же самое работает нормально на другом устройстве, на котором работает стандартное ПЗУ.
Эта строка кода
File outfile = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/" + "Sample" + ".png");
выдает следующий вывод на виновном устройстве:
Failed to ensure /storage/emulated/0/Android/data/com.gadgetsaint.downloadmanagerexample/files/Download
java.lang.IllegalStateException: Failed to prepare /storage/emulated/0/Android/data/com.gadgetsaint.downloadmanagerexample/files/Download
at android.os.Parcel.createExceptionOrNull(Parcel.java:3363)
at android.os.Parcel.createException(Parcel.java:3339)
at android.os.Parcel.readException(Parcel.java:3322)
at android.os.Parcel.readException(Parcel.java:3264)
at android.os.storage.IStorageManager$Stub$Proxy.mkdirs(IStorageManager.java:1415)
at android.os.storage.StorageManager.mkdirs(StorageManager.java:1421)
at android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:3767)
at android.app.ContextImpl.getExternalFilesDirs(ContextImpl.java:894)
at android.app.ContextImpl.getExternalFilesDir(ContextImpl.java:883)
at android.content.ContextWrapper.getExternalFilesDir(ContextWrapper.java:308)
at com.gadgetsaint.downloadmanagerexample.MainActivity$2.onClick(MainActivity.java:121)
at android.view.View.performClick(View.java:8228)
at android.view.View.performClickInternal(View.java:8205)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:31785)
at android.os.Handler.handleCallback(Handler.java:1041)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.dispatchMessage(Looper.java:315)
at android.os.Looper.loopOnce(Looper.java:251)
at android.os.Looper.loop(Looper.java:349)
at android.app.ActivityThread.main(ActivityThread.java:9041)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.StorageManagerService.mkdirs(StorageManagerService.java:3867)
at android.os.storage.IStorageManager$Stub.onTransact(IStorageManager.java:690)
at android.os.Binder.execTransactInternal(Binder.java:1441)
at android.os.Binder.execTransact(Binder.java:1385)
Странно то, что с помощью проводника устройств Android Studio я обнаружил, что другие приложения имеют каталоги внешних файлов (или кеша). Почему мой пример приложения (или приложения, которое я изначально отлаживал) не может получить доступ к внешнему хранилищу на этом устройстве, а не на другом? Оба устройства работают под управлением Android 16.
РЕДАКТИРОВАТЬ: если я попытаюсь создать внешний каталог загрузки вручную, я получу
java.nio.file.AccessDeniedException
Подробнее здесь: https://stackoverflow.com/questions/798 ... -cache-dir
Почему мое приложение не может получить доступ к своему внешнему каталогу кэша ⇐ Android
Форум для тех, кто программирует под Android
1770063457
Anonymous
Я пытался выяснить, почему приложение, которое я использую, не может загрузить файл (через диспетчер загрузок). С помощью примера кода я сузил его до того, что приложение не может создавать или получать доступ к своей собственной директории внешних файлов на устройстве, на котором я прошил собственное ПЗУ, в то время как то же самое работает нормально на другом устройстве, на котором работает стандартное ПЗУ.
Эта строка кода
File outfile = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString() + "/" + "Sample" + ".png");
выдает следующий вывод на виновном устройстве:
Failed to ensure /storage/emulated/0/Android/data/com.gadgetsaint.downloadmanagerexample/files/Download
java.lang.IllegalStateException: Failed to prepare /storage/emulated/0/Android/data/com.gadgetsaint.downloadmanagerexample/files/Download
at android.os.Parcel.createExceptionOrNull(Parcel.java:3363)
at android.os.Parcel.createException(Parcel.java:3339)
at android.os.Parcel.readException(Parcel.java:3322)
at android.os.Parcel.readException(Parcel.java:3264)
at android.os.storage.IStorageManager$Stub$Proxy.mkdirs(IStorageManager.java:1415)
at android.os.storage.StorageManager.mkdirs(StorageManager.java:1421)
at android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:3767)
at android.app.ContextImpl.getExternalFilesDirs(ContextImpl.java:894)
at android.app.ContextImpl.getExternalFilesDir(ContextImpl.java:883)
at android.content.ContextWrapper.getExternalFilesDir(ContextWrapper.java:308)
at com.gadgetsaint.downloadmanagerexample.MainActivity$2.onClick(MainActivity.java:121)
at android.view.View.performClick(View.java:8228)
at android.view.View.performClickInternal(View.java:8205)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:31785)
at android.os.Handler.handleCallback(Handler.java:1041)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.dispatchMessage(Looper.java:315)
at android.os.Looper.loopOnce(Looper.java:251)
at android.os.Looper.loop(Looper.java:349)
at android.app.ActivityThread.main(ActivityThread.java:9041)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.StorageManagerService.mkdirs(StorageManagerService.java:3867)
at android.os.storage.IStorageManager$Stub.onTransact(IStorageManager.java:690)
at android.os.Binder.execTransactInternal(Binder.java:1441)
at android.os.Binder.execTransact(Binder.java:1385)
Странно то, что с помощью проводника устройств Android Studio я обнаружил, что другие приложения имеют каталоги внешних файлов (или кеша). Почему мой пример приложения (или приложения, которое я изначально отлаживал) не может получить доступ к внешнему хранилищу на этом устройстве, а не на другом? Оба устройства работают под управлением Android 16.
РЕДАКТИРОВАТЬ: если я попытаюсь создать внешний каталог загрузки вручную, я получу
java.nio.file.AccessDeniedException
Подробнее здесь: [url]https://stackoverflow.com/questions/79881279/why-my-app-cant-access-its-external-cache-dir[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия