2012-01-13 3 views
1

Я действительно хочу получить доступ к файлам в системе Android. Мне удается читать файлы и каталоги во внешнем хранилище android. Мои вопросы:Как получить доступ к внешнему и внутреннему хранилищу?

  1. Как я могу получить доступ к директории и файлы во внутренней памяти (особенно видео, Pics все приложения, который работает в Android).
  2. Где хранятся данные каждого приложения, установленного во внутреннем хранилище?
  3. Возможно ли передавать данные, хранящиеся во внутреннем хранилище (из внутренней памяти во внешнее хранилище?
  4. Я прочитал, что внешнее хранилище доступно для чтения в мире? Что это значит? (Если создать приложение, то это приложение может получить доступ ко всем файлам, установленным во внешнем хранилище?)

ответ

4

По умолчанию приложение не может получить доступ к данным, хранящимся в другом приложении. Разрешения применяются к внутреннему хранилищу, которые делают данные, написанные приложением, недоступным вне этого приложения (ваше приложение не может читать что-либо, написанное другим приложением). Это можно изменить, когда приложение может указывать разные разрешения для IST-СОБСТВЕННЫХ данных, в основном приложение может разрешать другим пользователям o прочитать его данные. Однако, если приложение специально не устанавливает свои разрешения, чтобы разрешить это, другие приложения не могут получить доступ к своим данным. Это основополагающий принцип модели безопасности/изоляции Android и выполняется на уровне Linux/kernel, так как каждое приложение работает под своим собственным UID Linux, а разрешения устанавливаются в файловой системе, позволяя этому UID доступ к структуре каталога приложения (группа и мировые разрешения установлены на 0 по умолчанию).

Это все выходит из окна, если у вас есть доступ к корневому устройству на устройстве (корневой телефон и приложение запускаются с правами root), но мы должны учитывать это вне сферы действия для вашего вопроса.

Внешнее хранилище (SD-карта) отличается тем, что оно считается бесплатным для всех, и разрешения там не применяются (изначально это связано с файловой системой, обычно используемой в SD, не поддерживающей разрешения). Любое приложение может обычно читать все, что записано на SD-карту любым другим приложением, если только оригинальное приложение не делает что-то для его защиты (шифрование и т. Д.).

Все это подробно объясняется в Application Security for the Android Platform, только что опубликованном O'Reilly.

+0

Благодарим за ответ. Как правило, если мы хотим читать/записывать данные, файлы других приложений, хранящихся во внутренней памяти, мы должны получить права root? – user1073595

+0

Как правило, ваше приложение никогда не должно иметь доступа к данным или файлам или любому другому приложению, если это приложение явно не предоставляет это разрешение. Это основной принцип прикладной модели Android. – jeffsix

+0

невозможно управлять просмотром видео или изображений из других приложений во внутреннем хранилище? – user1073595

0

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

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