Android: возможно ли одноадресное намерение?

1

В Android можно одноадресную рассылку Intent на Activity? Единственные варианты, которые я вижу для отправки намерений, - это либо начать действие, либо выпустить трансляцию, но я хочу, чтобы конкретная цель получила мое намерение.

Теги:

4 ответа

2
Лучший ответ

Можно установить конкретный ComponentName с помощью конструктора или методов setComponent и setClassName.

1

Да. Объявите свою активность без каких-либо фильтров Intent:

<activity android:name=".MapActivity">
</activity>

Затем отправьте свой startActivity с намерением, который имеет имя компонента:

ComponentName comp = new ComponentName("package.name","package.name.MapActivity");
Intent intent = new Intent();
intent.setComponent(comp);
this.startActivity(intent);

В поле ComponentName вы также можете поместить другую активность приложения.

Подробнее об этом здесь.

1

возможно, попробуй укажите свое намерение и положите BroadcastReceiver в свою цель?

0

Из руководства dev относительно разрешения намерения кажется, что с явным намерением вы получаете поведение, которое ищете:

Явные намерения определяют цель компонент по имени [...] явный намерения обычно используются для внутренние сообщения приложения

Пока вы указываете цель, системе не следует искать соответствие между зарегистрированными фильтрами:

В отсутствие назначенной цели, система Android должна найти лучшее компонент (или компоненты) для обработки намерение

Кроме того, по мере того, как вы спрашивали о отправке сообщения в Activity, стоит отметить:

В этих системы обмена сообщениями: трансляция доставляются только для трансляции приемников, никогда не Сервисы. Цель принята startActivity() доставляется только деятельность, никогда к службе или широковещательный приемник и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню