Доступ к внутренним данным других приложений - PullRequest
2 голосов
/ 27 июля 2011

Я знаю, что это уже обсуждалось в какой-то момент.Но после поиска все еще есть некоторые вопросы к этой теме.


Моя ситуация: У меня есть приложение A, которое генерирует информацию и сохраняет ее во внутренней памяти.Приложение B должно получить доступ к информации App As.Дело в том, что приложение А было разработано до рассмотрения вопроса о необходимости приложения Б. Также важно: приложение А не должно быть модифицировано, если это возможно.


Что я нашел:

  1. Поставщик контента: к значительным изменениям
  2. Доступ к базе данных другого приложения
  3. сохранение информации на SD: последняя возможность
  4. Доступ к приложениюразрешение на файлы на внутреннем хранилище

Вопрос к пункту два: там написано:

Для обмена защищенными файламиприложения должны быть подписаны с тем же сертификатом и иметь соответствующий android: sharedUserId в своих файлах AndroidManifest.xml.

Я получаю точку с sharedUserId , но какой сертификатон ссылается на?

Вопрос к пункту три: Есть ли способ получить доступ к информации приложения А, если оно будет сохранено с другим Context.MODE ?

Я бы очень признателен за некоторые мысли о вас, ребята.Спасибо.

1 Ответ

1 голос
/ 27 июля 2011

Также важно: приложение А не должно модифицироваться, если это возможно.

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

Я получаю точку с sharedUserId, но на какой сертификат он ссылается?

Это было быключ подписи, с которым подписано ваше заявление.Для производства это будет ключ подписи, который вы использовали, например, для Android Market.

Помните, что вы не можете изменить sharedUserId Приложения A, не сломав всех существующих пользователей.Google также не рекомендует разработчикам SDK возиться с sharedUserId.

Вопрос к пункту три: есть ли способ получить доступ к информации приложения A, если оно будет сохранено в другом Context.MODE?

Context.MODE не имеет ничего общего с внешним хранилищем.Каждое приложение может читать (и, с помощью WRITE_EXTERNAL_STORAGE, писать) все, что они хотят, на внешнем хранилище.

Context.MODE вступает в игру с внутренним хранилищем (openFileOutput()).Однако, если вы сделаете файл доступным для чтения всем, тогда любое приложение сможет прочитать эти данные, а не только приложение B.

Поставщик содержимого: к значительным изменениям

Это,или, возможно, сервис с интерфейсом AIDL - лучший ответ, когда вы используете настраиваемое разрешение, чтобы гарантировать, что только приложение B может получить доступ к данным приложения A.

...