Доступ к внутренним данным других приложений

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


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


Что я нашел:

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

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

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

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

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

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


person Beasly    schedule 26.07.2011    source источник


Ответы (1)


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

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

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

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

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

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

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

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

Контент-провайдер: к большим изменениям

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

person CommonsWare    schedule 26.07.2011
comment
Я понимаю. Спасибо, что прояснили мне ситуацию. Как я и думал :) - person Beasly; 27.07.2011