Как общаться между двумя приложениями в Android?

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

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

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

  1. Ограниченный сервис
  2. Реализация URI
  3. Широковещательные приемники

Мой вопрос: какая реализация лучше всего соответствует моим потребностям? Где мне нужно передавать данные из одного приложения в другое, а также запускать действия и другие компоненты из одного приложения в другое.


person Emil Adz    schedule 28.08.2014    source источник
comment
проверьте этот stackoverflow.com/a/4639166/3020568   -  person deniz    schedule 28.08.2014
comment
Уже читал этот пост, но спасибо @deniz :)   -  person Emil Adz    schedule 28.08.2014
comment
вариант №1 — самый гибкий/простой способ   -  person pskink    schedule 28.08.2014
comment
и № 1 с AIDL делает это настолько простым, насколько это возможно.   -  person pskink    schedule 28.08.2014


Ответы (1)


После того, как я провел некоторое исследование по этой теме, я обнаружил, что есть несколько способов сделать эту операцию:

  1. Использование ограниченных служб, которые используют либо объект Messenger для передачи сообщений между локальным процессом и удаленной ограниченной службой, либо использование AIDL для создания интерфейса, который будет передаваться из удаленной ограниченной службы в локальный процесс, чтобы они могли взаимодействовать.

  2. Вторым вариантом будет использование старого доброго способа BroadcastReceivers. Таким образом, как всегда, можно запустить Intent из локального процесса в удаленный процесс и там получить некоторую информацию.

Различие в использовании этих двух процессов будет зависеть от того, насколько сильной должна быть связь между двумя процессами и как часто они должны обмениваться данными. Если им нужно время от времени выполнять одну операцию, BroadcastReceivers будет отличным решением. Но если вам нужно более стабильное соединение, вам подойдет Bounded Service.

person Emil Adz    schedule 23.09.2014