2009-12-29 2 views
1

В настоящее время у меня есть виджет для моего приложения HireADroid в комплекте с основным приложением. Я хотел бы разделить виджет и разблокировать его как отдельное предложение. Однако - виджет полагается на Activities из основного приложения, поэтому мне нужно перемещаться между этими двумя, главным образом вызывающим конкретное Activity главного приложения из виджета. Таким образом, основная идея - приложение может работать без виджета, а виджет становится опцией «add-on».Android - Активность вызова из виджета

Что такое «правильный» способ вызова приложений из автономного виджета? Преобразовать основное приложение в контент-провайдер? Можете ли вы указать мне на любые образцы кода?

С Новым годом!

P.S. Я не спрашиваю, как вызвать «Действия» из виджета, связанного с тем же APK. Вопрос конкретно говорится, что виджет распространяется отдельно от приложения это вызывающее

+0

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

+0

Hmmm ... Widget предоставляет новую функциональность: виджет и уведомления. Проблема. Я вижу очень малое использование виджета в своем приложении, и моя теория заключается в том, что пользователи просто не знают об этом. Как лучше рекламировать его, если не как отдельное предложение? – Bostone

ответ

0

Основной идея заключается в том, чтобы использовать Intents:

  1. В манифесте, есть ваша деятельность в ответ на определенные действия с использованием <intent-filter>.
  2. В коде вашего виджета создайте экземпляр класса android.content.Intent для действия, на которое вы активировали свою активность, и вызовите startActivity на экземпляр Intent.

Если деятельность является контекстной, вы можете использовать идентификаторы URI контента (вы можете создать Intents для действий/URI пар), а также передавать дополнительную информацию с помощью пучка Ань Extras "(см Intent.getExtras).

Более подробная информация доступна в документации здесь:

+0

Это первое, что я сделал: созданный контент-фильтр URI содержимого в манифесте основного приложения. Однако, когда я пытаюсь вызвать этот Intent из кода моего виджета, я получаю 'android.content.ActivityNotFoundException: No Activity найдено для обработки Intent {act = myapp: // widget/search}' Определяется мой целевой фильтр для активности как <замысел-фильтр> , и я называю это «новым намерением» («myapp: // widget/results») ' – Bostone

+0

Я полагаю, вы не можете сделать это в двух отдельных приложениях, общающихся друг с другом – Bostone

+0

Я думаю, что вы можете быть запутывающие действия (т. е. your.package.ACTION) и URI (т. е. контент: //your.package/content/path). Первым аргументом в конструкторе 'Intent' должно быть действие (т. Е.' ACTION_VIEW'), а второй * необязательный * аргумент может быть URI. –

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