2012-01-06 3 views
8

Есть ли схема или учебник о том, как вы разработали приложение с надстройками?Как разработать приложение с надстройками?

Например, как разработать какую-то структуру для добавления «тем» в приложение?

Существует базовое приложение с 2 темами. Пользователь должен иметь возможность загружать другое приложение для определенной темы.

Как работает оригинальное приложение и новое загруженное приложение?

Как бы вы разработали оригинальное приложение, чтобы получить информацию о теме и графические объекты из 2-го приложения только для темы?

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

ответ

6

Как оригинальное приложение и новое загруженное приложение разговаривают вместе?

Для темы, которая говорит, что им нужно поговорить вместе?

Как бы вы разработали оригинальное приложение, чтобы получить информацию о теме и графические объекты из 2-го темы только приложения?

Шаг №1: Выберите соглашение об именах для ваших пакетов. Например, если ваше базовое приложение - com.abc.app, ваши темы могут быть com.abc.app.theme.*.

Шаг № 2: Когда приходит время, чтобы пользователь мог выбрать тему, используйте PackageManager и getInstalledApplications(), чтобы найти свои темы, проверив имена своих пакетов.

Шаг 3: Когда приходит время, чтобы использовать тему, вызовите getResourcesForApplication() на PackageManager, чтобы тема приложения Resources, так что вы можете получить на свой материал.

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

+0

Относительно: "getResourcesForApplication() в PackageManager, чтобы получить ресурсы приложения темы" ... Вы можете сделать это для приложений вне своего собственного? Существуют ли какие-то функции безопасности, которые мне нужно реализовать, чтобы обеспечить доступ только к моему приложению к этим ресурсам, и никакие другие сторонние приложения не могут получить доступ? Это был бы недостающий кусок, который, я думаю, мне понадобится, чтобы начать. –

+1

@ CamilleSévigny: «Вы можете сделать это для приложений вне своего собственного?» -- да. «Существуют ли какие-то функции безопасности, которые мне нужно реализовать, чтобы обеспечить доступ только к моему приложению к этим ресурсам, и никакие другие сторонние приложения не могут получить доступ?» - все ресурсы всех приложений доступны для чтения всем приложениям, нравится вам это или нет. – CommonsWare

+0

«все ресурсы всех приложений доступны для чтения всем приложениям, нравится вам это или нет». ... Не шутите. Не имел представления. Спасибо за ваши ответы. –

0

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

Однако, если вы предпочитаете использовать их как отдельные записи в Market, вы можете установить флаг android: sharedUserId в манифесте, чтобы все они выполнялись под одним и тем же идентификатором пользователя, что позволит вам обмениваться файлами (растровые изображения, и т. д.) между ними. Помните, что все они должны быть подписаны с тем же сертификатом.

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

+0

Я согласен с подходом «есть темы, доступные на вашем собственном сервере» - я предполагал, что ОП по какой-то причине рассмотрел и отклонил это предложение. Однако «sharedUserId» является рискованным, так как любое изменение в нем означает, что ваше приложение больше не может читать свои собственные файлы. – CommonsWare

+0

Будет ли «sharedUserId» также работать над созданием приложения «Полная версия», которое просто действует как ключ для основного приложения, чтобы включить функции? – Izkata

+0

Нет «сервера» lol. Я бы согласился с тем, что загрузка из внешнего источника будет приятной, но это не вариант. Я пытаюсь подражать другим приложениям на рынке, где вы видите «Theme XXX For App YYY». Это не полные приложения, а дополнения для них. –

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