Нет разрешения на удаление на андроид. Не могу удалить с карты памяти андроид. Как удалить файлы в телефоне, если они не удаляются

Многие пользователи Android столкнулись с досадной проблемой, связанной с доступом приложений к SD карте. Одним из таких приложений является Google Фото. Когда-то всё было нормально. Но в Android 4.4 Google внедрили новую системную конфигурацию, которая запрещает приложениям писать на sd-карту. Удалять изображения через галерею, а затем снова удалять их же в google photos крайне неудобно.

Для себя я проблему решил рутованием девайса и исправлением конфигурации. Подробности на видео:

Но для обычных пользователей должно всё работать без root. О том как это осуществить я предлагаю обсудить в этой статье. Приглашаю представителей компании Google, Android разработчиков и всех интересующихся под хабракат.

Некоторых пользователей лишили функционала без предупреждения. Я видел комментарии пользователей со следующей ситуацией. Раньше они хранили фото на sd карте и пользовались google photo без каких-либо проблем. Потом производитель телефона предложил сделать OTA обновление (до 4.4 или выше), на что пользователи соглашались. Но они и думать не могли, что потеряют функционал. Теперь google photo не может удалять снимки, и чтобы обезболить процесс управления снимками, вынуждены хранить их на внутренней памяти, что само по себе болезненно.

В чём здесь дело

Google давно хотели запретить беспрепятственный доступ приложениям к sd карте. Объясняется это тем, что при удалении приложения, система не может узнать, какие файлы принадлежат приложению, таким образом sd карта захламлялась. И вот в Android 4.4 google ввели такое понятие как SAF (Storage Access Framework). Они запретили приложениям что-либо менять на sd карте, за исключением личного каталога приложения. А если приложение просит, то даёт право на чтение (но не запись) всего что на sd карте.

Тут решение за Google, может быть для них неприемлемо такое решение. Но как по мне, ничего зазорного в том, чтобы воспользоваться багом как фичей нет, ведь они должны сделать чтобы всё работало.

Вариант «Всё плохо, но вы обновитесь»

В той статье написано, что не на всех устройствах сработает такой хак. Тут уж ничего не остаётся, кроме как просто показать сообщение, что нет доступа. Правда в нём можно намекнуть, что помог бы рут, либо переход на другую версии Android, причём на более старую тоже сойдёт.

Вариант «Закладка»

Ещё у меня была идея, что Google могут обновить свои google сервисы (а это системное приложение) таким образом, чтобы к нему могло обращаться несистемное приложение google photos с просьбой удалить файл. И не нужен будет root. Пойдёт ли на это google?

Решение для более свежих версий Android

В Android 5.0 google улучшила SAF, и теперь приложения могут попросить пользователя предоставить доступ на запись в конкретные каталоги.

Цитата отсюда :

Richer access to secondary shared storage devices
In KitKat we introduced APIs that let apps read/write file in app-specific directories on secondary storage devices, such as SD cards.

We heard loud and clear that developers wanted richer access beyond these directories, so in Lollipop we added the new ACTION_OPEN_DOCUMENT_TREE intent. Apps can launch this intent to pick and return a directory from any supported DocumentProvider, including any of the shared storage supported by the device. Apps can then create, update, and delete files and directories anywhere under the picked tree without any additional user interaction. Just like the other document intents, apps can persist this access across reboots.

This gives apps broad, powerful access to manage files while still involving the user in the initial selection process. Users may choose to give your app access to a narrow directory like “My Vacation Photos,” or they could pick the top-level of an entire SD card; the choice is theirs.


Но даже на Android 5 google фото не использует эту возможность, а просто сообщает, что не имеет доступа. Я считаю, что прежде чем синхронизировать какой-то каталог, приложение сначала должно просить права на запись в него через SAF, чтобы можно было удалять снимки . Это можно сделать прямо с той самой активности, где переключателем выбираешь, какие каталоги хочешь синхронизировать (Настройки - Автозагрузка и синхронизация - Выберите папки). Google, почему вы так не делаете?

Подведём итог

Вот как себя ведёт приложение сейчас:
Пользователь нажал помоечку
Имеется ли непосредственный доступ на запись на sd карту?
Да - удаляем снимок.
Нет – выводим сообщение что нет доступа.

Как должно быть:
Пользователь нажал помоечку
Имеется ли непосредственный доступ/через лазейку на запись на sd карту?
Да - удаляем снимок.
Нет - тогда
- Мы работаем на Android 5.0+?
- Да - запросить доступ к каталогу через SAF и удалить снимок.
- Нет - (т. е. скорее всего это 4.4. Но может быть и специально изменённый 4.3-, настроенный как в 4.4) тогда:
- - Вывести сообщение: «Нет доступа, но вам поможет рут, либо смена версии Android» либо «Настройте системную камеру на сохранение снимков в /storage/extSdCard/Android/data/com.google.android.apps.photos/DCIM», либо «Обновите google сервысы, мы через них дадим доступ на запись» на усмотрение google.

Нужны разработчики

Если тут есть представители google, передайте информацию разработчикам. Потому что данная тема обсуждается уже давно, но Google не исправляет ситуацию.

А для хабраюзеров, которые умеют разрабатывать на Android хочу задать вопрос. Возможно ли изменить приложение так как я сказал, но своими силами, не дожидаясь google? Я знаю про несоответствие цифровой подписи, но в нашем случае это не важно. Ведь всё это нужно только если приложение не системное. А если оно не системное, то можно его удалить и затем установить с другой подписью. Я видел модифицированное приложение вместо youtube - OGYouTube. Возможно это как раз то, что я описываю.

Заполните эту форму, если у вас была/есть описываемая проблема.

Результаты опроса

















На этом считаю, что сделал своё дело. Теперь ход Google. Или сообщества.

Я купил новый телефон Samsung Galaxy S5, и сразу столкнулся с проблемой в операционной системе Android. А точнее, версии Андроид 4.4 KitKat. В этой версии Андроид введена новая фишка разработчиков Google.

Теперь приложениям запрещен доступ к редактированию файлов на SD карте! Это приводит к тому, что некоторые приложения неработоспособны!

Я расскажу вам, как обойти эту проблему!

Добрый день, уважаемые читатели нашего блога!

На днях я купил себе новый телефон! Samsung Galaxy S5!

НАСЛАЖДЕНИЕ НОВЫМ ТЕЛЕФОНОМ

Поздравляю себя с удачной покупкой, о которой мечтал несколько лет! Телефон оказался замечательно быстрым, мощным, красивым и удобным!

Ранее у меня уже был телефон HTC (ему уже около 4-5 лет) с Андроид системой. Один из первых телефонов с такой системой (на момент покупки). Я его изучил вдоль и поперек, перепрошивал систему несколько раз, выбрал прошивку Андроид, которая по функционалу много превосходила на тот момент официальную.

Для тех, кто не в курсе, перепрошивка — это замена операционной системы телефона. Ну примерно как переустановка Windows на компьютере.

Прошло много времени, вышло много версий Андроид (на момент покупки у меня была Андроид 2.2). Новые версии и телефоны, на которых они устанавливались, много превосходят мой старенький смартфон. Поэтому я был сильно удивлен мощью, быстротой и функциональностью.

Наслаждался я около 4 суток. Затем наткнулся на проблему!

ПРОБЛЕМА! Файловая система запрещает редактирование файла!

После очередного обновления, операционная система телефона сама обновилась до версии Андроид 4.4

Каково же было мое удивление, когда я не смог отредактировать ни один файл на собственном телефоне! Сначала я грешил на глюки, проверил в разных папках, попробовал отредактировать файл с компьютера (подсоединив кабель к телефону). Никаким способом не получалось редактировать файлы!

Посмотрев информацию об операционной системе в Настройки — Об устройстве — Состояние SE для Android я увидел слово Enforcing.

Это кодовое слово Google означает версию Андроид, где на уровне ядра операционной системы ограничены права приложений! ЕМАЕ! Ну я попал!

Я обратился к интернету за решением проблемы

Вот, что я обнаружил:

Х очу заметить, что мой телефон совсем новый, с гарантией от производителя на 5 лет!

Если получитьRoot-доступ (администраторские права в системе Андроид), то гарантия от производителя (Samsung) исчезает. По правде сказать, некоторые хакерские сайты утверждают, что есть специальные методы вернуть заводской счетчик к первоначальному положению. Заводской счетчик при получании Root-доступа обнуляется. Это показывает обслуживающей компании о том, что телефон был взломан, и гарантия на него не распространяется.

Чтобы повлиять на этот счетчик, нужно разобрать телефон и залезть в микросхемы. Поэтому не ведитесь на такие обманы!

Если вы получите Root-доступ, то гарантия у вас исчезнет! Проверено на своем старом телефоне!


В новой версии Андроид 5.0 Google использует другую логику запрета на доступ к внешним SD-картам памяти.

1. Каким образом работает новая логика?

Приложения устанавливаются в систему в скомпилированном виде. То есть в виде, готовом к запуску. Это увеличивает быстродействие, многозадачность и уменьшает расход батареи.

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

Теперь, в Андроид 5.0, все приложения устанавливаются в скомпилированном, разархивированном виде. Это приводит к тому, что приложения расходуют больше места, но быстрее выполняются!

2. К чему это приводит?

  1. Права доступа задаются приложению ПРИ УСТАНОВКЕ!
  2. Пользователь вправе сам устанавливать права конкретному приложению при установке.
  3. Пользователь может поменять права приложению. Например, если вы доверяете какой-то программе, то можете разрешить ей редактирование файлов на внешней карте памяти.

Я ХОЧУ ОБНОВИТЬ АНДРОИД ДО ВЕРСИИ 5.0, чтобы решить проблему!

Если я обновлю ОФИЦИАЛЬНО версию операционной системы, то я СОХРАНЮ ГАРАНТИЮ!

Но мне нужна версия Андроид для России (именно для нее, а не для другой страны), чтобы не мучиться с английскими словами в интерфейсе.

Попытаюсь найти ее.

Официальная программа поддержки Samsung телефонов Kies говорит, что мой телефон обновлен до последней версии По.

Официальных обновлений Андроид (для нашего региона) я не нашел на официальных сайтах.

На форумах я нашел информацию, что Google выпустила версию прошивки для России в январе 2015. Но очень медленно внедряется на аппараты клиентов.

Таким образом, я могу подождать, пока на мой аппарат не поступит сообщение о том, что есть обновление По. После этого я смогу обновить Андроид.

Можно, не дожидаясь приглашения, самому прошить на новую прошивку.

РАБОТАЮЩИЙ Способ редактирования файлов (с помощью компьютера) на телефоне с Android 4.4 версии Enforcing.

После того, как я решил дождаться официального обновления, стал рыться в файловой системе на телефоне. И обнаружил странное:

  1. Есть права на редактирование папок — перемещение, переименование!
  2. Можно удалять файлы, перемещать в другие папки (как копии)
  3. Нет прав на редактирование файлов!

И мне сразу пришел рабочий способ изменения файла с помощью промежуточной копии! Системный анализ в действии...

То есть что мы делаем:

  1. Открываем файл на редактирование
  2. Сохраняем на компьютере (на телефоне не даст сохранить копию!)
  3. удаляем файл из телефона
  4. переписываем копию на место удаленного файла!

Таким образом мы получаем измененный файл (с помощью промежуточной копии)!

Вот такие дела, товарищи!

Будут новости, сразу отпишусь!

А теперь пока, до скорого!

Наконец-то Google сделал это. Android 6.0 Marshmallow включает в себя новый iOS стиль, добавляющий управление разрешениями Android приложений. Вы также можете вручную отменить разрешения любого приложения - даже, разработанные для старых версий Android.

Вам не нужен root доступ , кастомная прошивка или переходить на iPhone, чтобы сделать это. Теперь в этой мобильной операционной системе есть управление разрешениями Android приложений.

Новая система разрешения приложений Android

Приложения для Android 6.0 теперь будут спрашивать разрешения, когда они в них нуждаются. Например, вместо того, чтобы дать разрешение на доступ к камере при установке приложения, Вам будет предложено разрешить доступ к камере при первом запуске этого приложения.

Вы можете вручную управлять разрешениями для приложений, даже если приложения были выпущены для старых версий Android и они не запрашивают доступ при первом запуске.

Управление разрешениями Android приложения

Для этого Вам потребуется Android 6.0 Marshmallow или более новая версия на Вашем устройстве.

Откройте «Настройки», нажмите на пункт «Приложения», который находится в разделе «Устройство».

Вы увидите список всех приложений, установленных на Вашем Android устройстве. Нажмите на приложение в списке, чтобы просмотреть дополнительную информацию. На экране информации о приложении Вы увидите пункт «Разрешения», в котором перечислены все разрешения, к которым приложение имеет доступ. Нажмите на «Разрешения».

Вы также можете быстро перейти к информации о приложении, нажав и удерживая иконку приложения, перетащить ее на ярлык «О приложении», который появится вверху экрана. Этот ярлык может отсутствовать на некоторых устройствах, так как производители и операторы могут использовать различный интерфейс.

Вернемся к разрешениям. Здесь будут отображаться различные разрешения, например, контакты, телефон, SMS и другие. Приложения для старых версий Android автоматически получат все требуемые разрешения при установке, но Вы можете выключить разрешения по желанию.

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

Старые приложения не рассчитаны на эту функцию, и они, как правило, просто предполагают, что имеют доступ к любым функциям, которые им требуются. В большинстве случаев после отключения разрешений приложения работают стабильно. В некоторых случаях отключение разрешения может привести к сбою, в этом случае просто включите разрешение снова. Например, если Вы отключение разрешение на доступ к камере для приложения, которое предназначено для фотографирования, то приложение больше не сможет делать фотографии. Вы не получите сообщение о том, что необходимо снова дать разрешение на работу с камерой. Поэтому управление разрешениями Android это полезная, но, в некотором роде, опасная функция.

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

Вы также можете зайти в меню, которое располагается в правом верхнем углу на данном экране, и нажать «Все разрешения». Здесь можно увидеть все разрешения, которые выданы приложению. Android скрывает некоторые разрешения. Как видите, управление разрешениями Android приложений распространяется не на все категории.

Имейте ввиду, что при обновлении приложение может получить разрешение не спрашивая Вас об этом. Например, если некоторое приложение может использовать чтение контактов и Вы разрешите использовать «Телефон», то после обновления приложение может получить разрешение на телефонный вызов, что в последствие может стоить Вам потерянных денег. Так как телефонный вызов является частью разрешения «Телефон», то дополнительных запросов на разрешение совершать звонки не будет. Вы можете просмотреть, что означают каждые разрешения на сайте Google.

Просмотр и управление разрешениями Android для всех приложений

Для просмотра и управления разрешениями для всех приложений сразу, откройте Настройки и перейдите в Приложения. В правом верхнем углу нажмите на иконку шестеренки и нажмите на пункт «Разрешения приложений».

Вы увидите список разрешений и количество приложений, которые имеют доступ к этим разрешениям. Категории включают в себя SMS, Календарь, Камера, Контакты, Местоположение, Микрофон, Нательные датчики, Память, Телефон и некоторые дополнительные разрешения.

Для просмотра приложений, использующих категорию разрешений, нажмите на нее. Например, чтобы увидеть какие приложения имеют доступ к данным календаря, нажмите на «Календарь». Чтобы запретить приложению доступ к календарю, отключите его на данном экране.

При отключении разрешения Вы увидите предупреждение о том, что приложение было разработано для старых версий Android.

Как обычно, некоторые шаги и названия могут различаться на разных устройствах. Производители часто меняют интерфейс своих устройств, и некоторые опции могут быть в других местах.

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

Для мобильных устройств существует несколько способов избавления от вышеназванных элементов, но во всех случаях придется прибегнуть к помощи сторонних программ. Однако само действие необратимо, и если ранее были удалены важные материалы, то следует рассмотреть способы их восстановления, описанные в следующей статье:

Способ 1: Приложения для смартфонов

Эффективных вариантов избавления от уже стертых файлов на мобильных устройствах не так много. Примеры нескольких из них представлены ниже.

Andro Shredder

Довольно простая программа для работы с файлами. Интерфейс удобен в использовании и не требует особых знаний для выполнения нужных операций. Чтобы избавиться от удаленных файлов, требуется следующее:

iShredder

Пожалуй, одна из самых эффективных программ для избавления от уже удаленных файлов. Работа с ней происходит следующим образом:

Способ 2: Программы для ПК

Названные средства в первую очередь предназначены для очистки памяти на компьютере, однако некоторые из них могут быть эффективным и для мобильных. Детальное описание приведено в отдельной статье:

В отдельности следует рассмотреть . Эта программа широко известна всем пользователям, и имеет версию для мобильных устройств. Однако в последнем случае отсутствует возможность очищать место от уже удаленных файлов, в связи с чем придется обратиться к версии для ПК. Выполнение нужной очистки сходно с описанием в предыдущих способах и подробно описано в приведенной выше инструкции. Но программа будет эффективна для мобильного устройства только при работе со съемными носителями, к примеру, SD-картой, которую можно извлечь и подключить к компьютеру через переходник.

Рассмотренные в статье способы помогут избавиться от всех ранее удаленных материалов. При этом следует помнить о необратимости процедуры и убедиться в отсутствии важных материалов в числе удаляемых.

Одним из интереснейших методов безопасности операционной системы Андроид является система разрешений (permissions ), используемых приложениями. Когда OS ANDROID только появилась, её разработчики придумали – выделить все возможные функции, доступ к которым необходим приложению, и позволить пользователю их контролировать. Было это реализовано довольно интересно. Список возможных разрешений создан разработчиками Google и зафиксирован в документации. Он очень гибкий, в нем есть всё, что нужно для обеспечения какого угодно сложного функционала. Вместе с тем он грамотно разграничен.

Например, если программа работает с СМС, то ему можно дать права только на чтение сообщений, или только на их отправку, или только на уведомление о событии, которое связано с СМС. Это разграничение очень хорошо позволяет избегать злоупотребления привилегиями со стороны приложений. Ещё во время создания программы разработчик выделяет все функции, которые потребуются его программе. Этот список прописывается в файле AndroidManifest.xml, который на этапе сборки программы помещается в его APK-файл. Когда пользователь Андроид устройства будет устанавливать очередное приложение, то вышеупомянутый список, заданный его создателем, будет отображаться на экране. И только после того, как пользователь согласится дать все эти права устанавливаемому приложению, оно будет установлено. Считается, что именно на этом этапе большинство пользователей избежит вирусов, заподозрив программу в плохом поведении и отклонив установку.

С технической точки зрения, обойти существующий механизм прав доступа приложений к функциональности системы Андроид очень непросто. Так как менеджмент разрешений осуществляется на самом низком уровне ядром Linux, программе обязательно нужны права рут , чтобы повлиять на это. Хорошо формализованная система permissions облегчает реализацию инструментов безопасности сторонними разработчиками. Перспективным направлением является создание программ, которые позволяют пользователям тонко настраивать права доступа каждого отдельного приложения, предотвращая любые утечки информации с устройства.

Права доступа (permission) на папки и файлы в Андроид

Права доступа разделяются на две группы зто:
1.Права доступа к файлам
2.Права доступа к папке (директории)

Права доступа к файлам могут иметь такие атрибуты:
r - право на чтение данных. (read)
w - право на изменение содержимого или запись, но не удаление. (write)
x - право на исполнение файла. (xxxxxx)

Права доступа к папке (директории):
r - право на чтение папки (директории).
w - право на изменение содержимого директории можно создавать и удалять объекты в этой директории.
x - право, которое позволяет вам войти в директорию.

Сами права доступа подразделяются на три категории:
«user » - u владелец файла.
«group » - g член той же группы, к которой принадлежит владелец.
«world » - o все остальные.

Порядок записи прав доступа:
сначала права для владельца - «u »
затем для группы - «g »
и в конце права для всех остальных - «o »

Например: предположим что у вас на работе есть компьютер, вы его владелец, он состоит в локальной сети (группа) а есть пользователи, которые хотят что либо на вашем компьютере сделать. По всем этим категориям задаются права на файлы и папки в виде RWX которые дают какие либо права на выполнение чего либо, если в заданных правах RWX присутствует знак «-» то это означает что право отсутствует.
Например: rwx r-- r-- означает что владелец файла имеет все права: право на чтение, запись в него и исполнение, а все остальные пользователи только право на чтение.

Помимо буквенных выражений есть числовые выражения:
r - (читать) это 4
w (запись) это 2
x (исполнение) это 1
«- » ничего не делать тоесть знак дефиса, 0
И их сумма означает конечные права
7 (rwx) = 4 + 2 +1 (полные права)
5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
6 (rw-) = 4 + 2 + 0 (чтение и запись)
4 (r--) =4 + 0 + 0 (только чтение)

Часто используемые параметры:
400 (-r--------) - владелец будет иметь право чтения, никто кроме него не имеет права выполнять никакие действия.
644 (-rw-r--r--) - все пользователи имеют право чтения, а владелец может редактировать.
660 (-rw-rw----) - владелец и группа могут читать и редактировать, все остальные не имеют никаких прав.
664 (-rw-rw-r--) - все пользователи имеют право чтения, а владелец и группа могут редактировать.
666 (-rw-rw-rw-) - все пользователи могут читать и редактировать.
700 (-rwx------) - владелец может читать, записывать и запускать на выполнение, у других нет права выполнять никакие действия.
744 (-rwxr--r--) - все пользователи могут читать, а владелец имеет право редактировать и запускать на выполнение.
755 (-rwxr-xr-x) - каждый пользователь может читать и запускать на выполнение, владелец может редактировать.
777 (-rwxrwxrwx) - каждый пользователь может читать, редактировать и запускать на выполнение.
sudo passwd root - пароль суперпользователя root.




Top