Как сделать надстройку на Android - PullRequest
3 голосов
/ 20 января 2012

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

Ответы [ 3 ]

3 голосов
/ 20 января 2012

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

Следовательно, единственный вариантэто использовать намерения, но намерения не должны вызывать Activites.Вы можете создать сервис или метод широковещания, чтобы выполнить некоторую обработку и вернуть результаты в исходное действие.Читайте о них и посмотрите, сможете ли вы их использовать.Система Android - это система взаимодействующих приложений, а не плагинов.

http://developer.android.com/guide/topics/intents/intents-filters.html

1 голос
/ 20 января 2012

Интеграция функциональности может выглядеть немного иначе, чем вы ожидаете.Вы можете использовать функциональность другого приложения в своем собственном, используя намерение запустить действие в другом приложении.Допустим, ваше приложение - это приложение А, а все остальные на устройстве - это набор приложений: вы должны надеяться, что какое-то приложение сможет принять намерение и делать то, что вы хотите.Если вы хотите вернуть данные, вам также следует надеяться и на эту функциональность.Если разрешения требуются, вы должны надеяться, что приложение также настроено для этого.

Это всегда проблема сотрудничества между приложениями: у всех них должен быть API для взаимодействия.1004 * Итак, лучший подход - использовать намерение.

1 голос
/ 20 января 2012

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

Если «функциональность» - это «пользовательский интерфейс», это, как правило, невозможно за пределами RemoteViews (та же технология, что и для виджетов приложений).

Если «функциональность» - это что-то еще, следуйте ответу Чаббарда- плагин может предоставить вам API и / или вы можете предоставить ему API.

...