Передача данных через Android - PullRequest
1 голос
/ 22 октября 2011

Обзор

Я создаю приложение для Android, которое будет сканировать различные аспекты устройства (контакты, apns, электронные письма и т. Д.)

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

Вопрос

Как я могу получить доступ к этой информации стандартным способом? Я бы использовал какую-то форму интерфейса, если бы создавал типичное настольное приложение в стиле плагина, но Android не имеет такой возможности. Я изучил ContentProviders, но стороннему приложению нужно было бы разработать целую базу данных SQLite, чтобы позволить моему приложению получать доступ к его данным. Это кажется излишним.

Есть ли способ достичь этого?

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

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

Конечно, это делает .

Я изучил ContentProviders, но стороннему приложению нужно было бы разработать целую базу данных SQLite, чтобы позволить моему приложению получать доступ к его данным.

Нет, нет. ContentProvider это фасад. Вы можете реализовать то, что вам нравится.

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

«Установить» будет невозможно. При первом запуске и / или во время загрузки будет возможно.

Как я могу получить доступ к этой информации стандартным способом?

Если ваше приложение будет извлекать данные, кроме интерфейса ContentProvider или AIDL, вы можете отправить команду стороннему приложению через startService() и включить дополнительный элемент в Intent, который предоставляет канал для стороннего приложения, используемого для отправки своего ответа (например, Messenger, PendingIntent, ResultReceiver).

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

0 голосов
/ 22 октября 2011

Ну, Ричбейлис, у вас есть интересный вопрос.Таким образом, Android разработан с учетом именно этой вещи - взаимодействия между приложениями.Давайте разберем ваш вопрос на два основных ресурса:

  1. контакты, приложения, электронные письма и т. Д.
  2. некоторые другие данные, которые вы хотите, чтобы кто-то передавал вам.

В телефоне есть определенные вещи, которые являются родными для телефона, например, те, которые вы упомянули.Таким образом, это работает примерно так:

В Android есть несколько «Менеджеров» (например, ClientConnectionManager), которые похожи на привратники, которые могут получить доступ ко всей этой нативной информации.Это, безусловно, более простой способ получить доступ к этим ресурсам.Вы также можете получить к ним доступ, пройдя по пути sqllite, как вы упомянули - например, вы можете получить доступ к фотографиям, сделанным с камеры, с помощью курсоров, которые в конечном итоге ищут базу данных sqllite.

Вторая частьвопрос - некоторые другие вещи, которые вы хотите передать - позвольте мне привести пример того, как это работает в Android.В основном вы должны зарегистрироваться для определенных событий в вашем манифесте - скажем, как вы хотите знать каждый раз, когда кто-то нажимает на «поделиться» - эти данные, о которых вы говорите, объединяются и отправляются в Intents.Все, что вам нужно сделать, это зарегистрировать свое приложение для таких вызовов и объявить действие, которое может обработать определенный тип события.Короче говоря, разговор происходит между намерениями, а данные передаются в пакетах.

...