Страница 1 из 1

доступ к папке data

Добавлено: 30 июл 2014, 10:14
allexan
Можно ли получить доступ к папке внутренней памяти data другого приложения?

Re: доступ к папке data

Добавлено: 30 июл 2014, 11:13
Mikhail_dev
Если программно, то нет.
Чтобы приложения могли общаться между собой, придумали ContentProvider

Re: доступ к папке data

Добавлено: 30 июл 2014, 11:45
allexan
а что позволяет делать строка манифеста
android:sharedUserId
Application with the same user ID can access each other's data
(я не уточнил в своем вопросе что оба приложения подписаны одинаково)

Re: доступ к папке data

Добавлено: 30 июл 2014, 14:11
Mikhail_dev
Хм, раньше не приходилось пользоваться. Да, похоже возможно шарить ресурсы между приложениями, которые подписаны одинаково и у которых данный параметр выставлен также одинаковым.
http://stackoverflow.com/questions/1626 ... red-userid
http://stackoverflow.com/questions/9783 ... is-it-used

Re: доступ к папке data

Добавлено: 30 июл 2014, 15:23
allexan
Другой вариант: метод openFileOutput может создать файл с модификатором
MODE_WORLD_WRITEABLE: File creation mode: allow all other applications to have write access to the created file.
А каким образом эти другие получают доступ?

Re: доступ к папке data

Добавлено: 30 июл 2014, 15:55
Mikhail_dev
Это в рамках одного приложения. Если модификатор PRIVATE, то доступ в рамках одной активности вроде. Читайте документацию, там всё подробно написано.

Re: доступ к папке data

Добавлено: 30 июл 2014, 16:52
allexan
В документации написано: all other applications

Re: доступ к папке data

Добавлено: 30 июл 2014, 19:08
Mikhail_dev
Эм... Снова мой промах :) У меня эти вещи значит ошибочно в голове отложились. И вправду, доступ на все приложения.
Собственно если Вы достаточно и так осведомлены, то к чему такие вопросы? Я лишь замечу, что этот флаг, как Вы уже заметили, deprecated с API17. Сейчас используют ContentProvider для шаринга общих данных, но опять же, надо контент провайдеру выставить android:exported=false , чтобы не открыть доступ по умолчанию для других приложений (до Андроида 4.2)

Re: доступ к папке data

Добавлено: 31 июл 2014, 02:09
Viewer
Нет никаких проблем с доступом к файлам другими приложениями (без разницы, как они подписаны и кем), все зависит какие атрибуты доступа вы ему поставите.
В API 9 и выше для установки атрибутов можно пользоваться методами setReadable(), setWritable() и setExecutable() класса File
Для совместимости с более старыми API можно использовать chmod (линуксоидам должно быть хорошо знакомо :) )
Например
Runtime.getRuntime().exec("chmod 777 filePath");
понятно что это применимо только для своих файлов приложения (т.е. расшарить можно только свои файлы), чтобы изменить атрибуты файлов чужих приложений или системных нужно иметь рут и предварительно выполнить
Process p = Runtime.getRuntime().exec("su"); и далее работать с этим процессом (это уже отдельная тема)

Re: доступ к папке data

Добавлено: 31 июл 2014, 11:45
allexan
Осведомлен я только в том, что доступ к файлам внутренней памяти другого приложения вроде бы возможен.
Вопрос в том, как этот доступ осуществить.
В методе openFile указывается только имя файла (без пути, если указать путь, приложение вылетает)
но пути то у разных приложений разные

Re: доступ к папке data

Добавлено: 31 июл 2014, 13:58
Viewer
Что это за метод такой - openFile?

Re: доступ к папке data

Добавлено: 31 июл 2014, 14:21
allexan
Open Declaration FileOutputStream android.content.Context.openFileOutput(String name, int mode) throws FileNotFoundException

public abstract FileOutputStream openFileOutput (String name, int mode)
Added in API level 1
Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.

No permissions are required to invoke this method, since it uses internal storage.

Parameters
name The name of the file to open; can not contain path separators.
mode Operating mode. Use 0 or MODE_PRIVATE for the default operation, MODE_APPEND to append to an existing file, MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE to control permissions.

Re: доступ к папке data

Добавлено: 01 авг 2014, 12:41
Viewer
Эти методы используются для упрощения работы с "песочницей" приложений, поэтому полный путь там задавать не нужно, система и так знает где они должны находиться.

Для доступа к файлам есть и другие методы, перекочевавшие из Java (см. java.io), причем им абсолютно без разницы где сами файлы находятся, лишь бы с правами доступа все было нормально, и необходимые разрешения в манифесте прописаны.