Google Chrome оказался приложением для просмотра по умолчанию для значительного числа пользователей Android с тех пор, как он вышел, и останется им, независимо от того, насколько хорошим станет встроенное браузерное приложение на вашем смартфоне, если вы не один из этих пользователей. которые годами привязаны к встроенному в браузер приложению.
Google Chrome широко используется для загрузки файлов и программного обеспечения с веб-сайтов и других нужд просмотра. Загрузка сторонних приложений или документов из Chrome происходит быстро и так же просто, как кажется, т. е. переход на нужный веб-сайт и загрузка файла. Однако недавние жалобы показали, что различные пользователи Android сталкиваются с проблемами при попытке загрузить что-либо, утверждая, что «chrome требуется доступ к хранилищу».
Исправить ошибку Chrome требуется доступ к хранилищу на Android (Fix Chrome Needs Storage Access Error on Android)
Без лишних слов давайте посмотрим, как можно устранить ошибку «Chrome требуется доступ к хранилищу» с помощью приведенного ниже руководства по устранению неполадок.
Как настроить доступ приложений на Samsung Galaxy S21 FE / Разрешения приложений Galaxy S21 FE
Способ 1. Разрешите Google Chrome доступ к хранилищу устройств (Method 1: Allow Google Chrome to access devices storage)
Предоставление разрешения на хранение в Chrome необходимо для сохранения загруженных файлов на вашем устройстве.
1. Откройте « Все приложения» или «Диспетчер приложений (All Apps or Application Manager ) » в разделе «Настройки» (“Settings”) .
2. Перейдите в Google Chrome .
3. Нажмите на разрешения приложения. (app permissions.)
4. Включите разрешение на хранение. (storage permission. ) Если он уже включен, отключите его и снова включите.
Способ 2: очистить кеш приложения и данные (Method 2: Clear app cache and data)
1. Откройте «Настройки» на своем устройстве и перейдите в «Приложения» или «Диспетчер приложений». (Apps or Application Manager.)
2. Перейдите к «Google Chrome» в разделе « Все приложения». (All Apps.)
3. Нажмите « Хранилище (Storage ) » в разделе сведений о приложении.
4. Нажмите « Очистить кэш». (Clear Cache.)
Разрешения для приложений на телефоне Андроид: как предоставить или убрать?
5. Чтобы очистить данные приложения, нажмите «Управление пространством» (“Manage Space”) , а затем выберите « Очистить все данные». ( Clear All Data.)
Способ 3: изменить место загрузки файлов (Method 3: Change the location where files are downloaded)
Совершенно очевидно, что вам нужно иметь достаточно места для загрузки файлов с любого веб-сайта. Тем не менее, рекомендуется проверить, достаточно ли на вашем устройстве места для конкретного файла, который вы хотите загрузить. Если на вашем устройстве недостаточно места, переключите место загрузки на SD-карту. (download location to SD Card.)
1. Откройте Google Chrome .
2. Нажмите на значок меню (3 вертикальные точки) (Menu icon (3 vertical dots)) и перейдите к «Загрузки» (“Downloads”) .
3. Нажмите «Настройки» ( “Settings”) (значок шестеренки), расположенный в верхней части экрана (рядом с поиском).
4. Нажмите « Место загрузки (Download location ) » и выберите «SD-карта» (“SD Card”) .
Снова попробуйте загрузить свои файлы и посмотреть, сможете ли вы исправить ошибку доступа к хранилищу Chrome на Android. (fix Chrome needs storage access error on Android.)
Способ 4: обновить Google Chrome (Method 4: Update Google Chrome)
Возможно, текущая версия приложения на вашем устройстве содержит ошибки и несовместима с работой на устройстве. Однако, если приложение еще не обновлено, рекомендуется обновить его, так как разработчики уже исправили эти ошибки и решили другие проблемы.
1. Зайдите в Play Маркет (Play Store) и коснитесь символа меню (три горизонтальные линии) (Menu symbol (three horizontal lines)) .
2. Выберите «Мои приложения и игры» (“My apps and games”) и перейдите в «Google Chrome» .
3. Нажмите «Обновить» (“Update”) , если он еще не был обновлен.
4. После обновления откройте приложение и попробуйте загрузить файл.
Способ 5: установить бета-версию Chrome (Method 5: Install Chrome Beta)
Если ни один из вышеперечисленных способов не сработал, установите бета-версию Chrome (beta version of the Chrome) на свое устройство и используйте ее вместо другого приложения Google Chrome.
Одно из основных преимуществ бета-версии Chrome – возможность опробовать новые неопубликованные функции. Хотя они могут быть немного глючными, попробовать стоит, и самое интересное, что вы можете оставить отзыв об этих функциях, и, основываясь на мнениях пользователей, команда разработчиков решит, включать их в исходную версию или нет.
Рекомендуемые: (Recommended:)
- Исправить ошибку «Приложение не установлено» на Android (Fix Application not installed error on Android)
- Как установить собственный рингтон для текстового сообщения на Android (How to Set Custom Text Message Ringtone on Android)
Как некоторые приложения получают доступ к содержимому подпапок «… / Android /…» на Android 11 без рута?
Существуют различные ограничения хранилища для Android 10 и 11 , который также включает новое разрешение ( MANAGE_EXTERNAL_STORAGE) для доступа все файлы (но он не разрешает доступ действительно ко всем файлам), в то время как предыдущее разрешение на хранение было уменьшено, чтобы предоставить доступ только к медиафайлам:
- Приложения могут свободно обращаться к подпапке «media».
- Приложения никогда не могут получить доступ к подпапке «данные» и особенно к содержимому.
- Для папки «obb», если приложению разрешено устанавливать приложения, оно может добраться до нее (скопировать туда файлы). Иначе не может.
- Используя USB или root, вы все равно можете связаться с ними, а как конечный пользователь вы можете связаться с ними через встроенный файловый менеджер «Files».
Проблема
Я заметил приложение, которое каким-то образом преодолевает это ограничение (здесь) с названием» X-plore»: после входа в папку «Android / data» вас попросят предоставить к ней доступ. (как-то напрямую используя SAF), и когда вы его предоставите, вы получите доступ ко всему во всех папках папки «Android».
Это означает, что, возможно, еще есть способ достичь этого, но проблема в том, что я по какой-то причине не смог сделать образец, который делает то же самое.
Что я нашел и попробовал
Кажется, это приложение нацелено на API 29 (Android 10), и что оно еще не использует новое разрешение, и что у него есть флаг requestLegacyExternalStorage. Я не знаю, сработает ли тот же трюк, который они используют, при таргетинге на API 30, но могу сказать, что в моем случае, работающем на Pixel 4 с Android 11, он работает нормально.
Итак, я попытался сделать то же самое:
- Я сделал образец POC, предназначенный для Android API 29, с предоставленными разрешениями на хранилище (всех видов), включая устаревший флаг.
- Я попытался запросить доступ напрямую к папке «Android» (на основе здесь), который, к сожалению, не сработал по какой-то причине (продолжал переходить в папку DCIM, не знаю почему):
val androidFolderDocumentFile = DocumentFile.fromFile(File(primaryVolume.directory. «Android»)) val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) .setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) .putExtra(DocumentsContract.EXTRA_INITIAL_URI, androidFolderDocumentFile.uri) startActivityForResult(intent, 1)
Пробовал разные комбинации флагов.
- При запуске приложения, когда я сам добираюсь до папки «Android» вручную, так как это не сработало, я предоставил доступ к этой папке, как и к другому приложению.
- Получив результат, я пытаюсь получить файлы и папки по пути, но получить их не удается:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) < super.onActivityResult(requestCode, resultCode, data) Log.d(«AppLog», «resultCode:$resultCode») val uri = data?.data ?: return if (!DocumentFile.isDocumentUri(this, uri)) return grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) val fullPathFromTreeUri = FileUtilEx.getFullPathFromTreeUri(this, uri) // code for this here: https://stackoverflow.com/q/56657639/878126 val documentFile = DocumentFile.fromTreeUri(this, uri) val listFiles: Array= documentFile. listFiles() // this returns just an array of a single folder («media») val androidFolder = File(fullPathFromTreeUri) androidFolder.listFiles()?.forEach < Log.d(«AppLog», «$children:$») //this does find the folders, but can’t reach their contents > Log.d(«AppLog», «granted uri:$uri $fullPathFromTreeUri») >
Таким образом, с помощью DocumentFile.fromTreeUri я все еще мог получить просто папку «media», которая бесполезна, и, используя класс File, я мог видеть только, что есть также папки «data» и «obb», но все еще не мог добраться до их содержимого .
Так что это вообще не сработало.
Позже я обнаружил другое приложение, использующее этот трюк, под названием «MiXplorer». В этом приложении ему не удалось напрямую запросить папку «Android» (возможно, он даже не пытался), но он предоставляет вам полный доступ к ней и ее подпапкам, как только вы это разрешите. И он нацелен на API 30, поэтому это означает, что он не работает только потому, что вы нацеливаетесь на API 29.
Я заметил (кто-то написал мне), что с некоторыми изменениями в коде я могу запросить доступ к каждой из подпапок отдельно (имеется в виду запрос на «данные» и новый запрос на «obb»), но это не то, что я здесь вижу, а приложения.
То есть, чтобы попасть в папку «Android», я использую этот Uri в качестве параметра для Intent.EXTRA_INITIAL_URI:
Однако, как только вы получите к нему доступ, вы не сможете получить из него список файлов ни через File, ни через SAF.
Но, как я уже писал, странно то, что если вы попробуете что-то подобное, вместо того чтобы перейти к «Android / data», вы сможете получить его содержимое:
Вопросы
- Как я могу запросить намерение непосредственно в папке «Android», которое фактически позволит мне получить к нему доступ и позволит мне получить подпапки и их содержимое?
- Есть ли для этого другая альтернатива? Может быть, используя adb и / или root, я мог бы предоставить SAF доступ к этой конкретной папке?
android developer 30 Янв 2021 в 15:00
3 ответа
Лучший ответ
Вот как это работает в X-plore:
Когда на Build.VERSION.SDK_INT>=30 , [Внутреннее хранилище] / Android / data недоступно, java File.canRead() или File.canWrite() возвращает false, поэтому нам нужно переключиться на альтернативную файловую систему для файлов внутри этой папки (и, возможно, также obb).
Вы уже знаете, как работает структура доступа к хранилищу, поэтому я просто подробно расскажу, что именно нужно сделать.
Вы звоните ContentResolver.getPersistedUriPermissions() , чтобы узнать, есть ли у вас уже сохраненное разрешение для этой папки. Изначально у вас его нет, поэтому вы спрашиваете разрешения у пользователя:
Итак, мы вернулись к ContentResolver.getPersistedUriPermissions() , который содержит список предоставленных разрешений (их может быть больше), тот, который вы предоставили выше, выглядит так: UriPermission (тот же Uri, что и у вас в onActivityResult ). Просмотрите список от getPersistedUriPermissions , чтобы найти интересующий uri, если он найдет работу с ним, в противном случае попросите пользователя предоставить грант.
Подобным образом вы работаете с другими функциями SAF для чтения / записи / переименования / перемещения / удаления / создания, которые вы, вероятно, уже знаете, используя ContentResolver или методы DocumentsContract .
- ему не нужно android.permission.MANAGE_EXTERNAL_STORAGE
- он работает на целевом API 29 или 30
- он работает только с основным хранилищем, а не с внешними SD-картами
- для всех файлов внутри папки данных вам необходимо использовать SAF (файл java не будет работать), просто используйте иерархию файлов относительно папки Android
- в будущем Google может залатать эту дыру в своих намерениях «безопасности», и это может не сработать после некоторого обновления безопасности.
РЕДАКТИРОВАТЬ: образец кода, основанный на образце Github Cheticamp. В примере показано содержимое (и количество файлов) каждой из подпапок папки «Android»:
android developer 4 Мар 2021 в 21:22
Имея ту же проблему, я использовал приведенный ниже код для создания новой папки / подпапки во внешнем хранилище. он также работает в Android 11 с устройством пикселей 2xl и пикселей 3
public static final String FILE_DIR_PATH() < String filePath = «»; File file = new File(Environment.getExternalStorageDirectory() + File.separator + «» + File.separator + «»); if (!file.exists()) < file.mkdir(); >filePath = file.getAbsolutePath(); return filePath; >
Проверьте это и дайте мне знать, если возникнут проблемы
Для этого не требуется никакого специального разрешения
андроид : requestLegacyExternalStorage = » истина»
В вашем файле манифеста и проверьте
Источник: question-it.com
Ваш вопрос: Как разрешить доступ к файлам на Андроиде?
Нажимаем ссылку «Выберите объект» Затем «Дополнительно» – «Поиск», выбираем из списка нужный субъект и нажимаем «ОК» Среди списка элементов «Общие разрешения» напротив пункта «Полный доступ» ставим галочку и жмем «ОК».
Как ограничить доступ в галерею?
Все на самом деле очень просто:
- Включите функцию “Прикрепить окна”, открыв Настройки > Экран блокировки и защита > Другие параметры безопасности, либо воспользуйтесь встроенным поиском.
- Откройте приложение, которое хотите закрепить.
- Нажмите кнопку “Недавние приложения”, а затем тапните по иконке в форме булавки.
Как запретить приложению доступ к файлам?
Отключить доступ приложения к файловой системе в Windows 10
- Перейдите в Настройки> Конфиденциальность> Файловая система.
- Отключите тумблер в разделе Разрешить приложениям доступ к вашей файловой системе .
ЭТО ИНТЕРЕСНО: Вопрос: Сколько передач в 2108?
Как ограничить доступ к папке на андроид?
Как закрыть доступ к файлу
- Откройте главный экран Google Диска, Документов, Таблиц или Презентаций.
- Выберите файл или папку.
- Выберите Настройки доступа или нажмите на значок «Открыть доступ к объекту» .
- Найдите пользователя, которому нужно закрыть доступ к файлу.
- Справа от его имени нажмите на стрелку вниз
Как разрешить доступ к файлам телефона с компьютера?
Вариант 2. Передача файлов через USB-кабель
- Разблокируйте экран телефона.
- Подключите устройство к компьютеру с помощью USB-кабеля.
- На телефоне коснитесь уведомления «Зарядка устройства через USB…».
- В диалоговом окне «Режим работы USB» выберите Передача файлов.
- Перетащите файлы в открывшееся окно.
Как включить функцию поверх других приложений?
Здесь нужно совершить следующие действия:
- Шаг 1. Зайдите в «Настройки». …
- Шаг 2. Перейдите в раздел «Приложения».
- Шаг 3. Зайдите в подраздел «Диспетчер приложений».
- Шаг 4. Нажмите на кнопку «Опции», находящуюся в правом верхнем углу.
- Шаг 5. Выберите пункт «Поверх других приложений».
- Шаг 6.
Как получить доступ к файлам компьютера через телефон?
Сначала подключите телефон к компьютеру с помощью USB-кабеля, который позволяет передавать файлы.
- Включите телефон и разблокируйте его. …
- На компьютере нажмите кнопку Пуск , а затем выберите Фотографии , чтобы открыть приложение «Фотографии».
- Выберите Импорт > С USB-устройства и следуйте инструкциям.
Как открыть доступ на гугл диске для всех?
Вот как это сделать:
- Откройте сайт drive.google.com на компьютере.
- Выберите нужную папку.
- Нажмите на значок «Открыть доступ к объекту» .
- В строке «Люди» введите адрес электронной почты нужного пользователя или группы Google.
- Чтобы настроить права доступа, нажмите на стрелку вниз .
- Нажмите Отправить.
ЭТО ИНТЕРЕСНО: Частый вопрос: В чем отличие между двигателя 21083 от 2111?
Как получить доступ к сетевой папке с телефона?
Подключите мобильное устройство к вашей сети Wi-Fi, установите приложение через Play Маркет (в ОС Android) и запустите его. В приложении на вкладке «Сеть» нажмите «+». Затем на вкладке «Удаленные службы» нажмите на «Локальная сеть». Приложение выполнит поиск устройств в локальной сети и отобразит их.
Источник: avtograf70.ru