Intereting Posts
Как исключить модуль из всех зависимостей, но оставить явное объявление Gradle Holoeverywhere: как программно удалить во время выполнения панель действий из активности React Native на Android не удалось найти Build Tools Нет кэшированной версии com.android.tools.build:gradle:0.9.1 для автономного режима Воспроизведение RTSP в приложении для Android Java.lang.IllegalArgumentException: для id 0x1020002 (android: id / content) для фрагмента нет Динамический значок приложения Google Play App Запустить Android-приложение Android для отправки ожидающих сообщений Уведомления Android push с XMPP Написание python (или любого другого SL4A) в android Я планирую локальное уведомление в определенное время, используя переключатель, но не запуская его в заданное время Как отправить csv / текстовый файл с телефона Android на принтер Wi-Fi? Android VideoView: просмотр видео в диалоговом окне намного темнее Android AudioRecord для сервера по вопросам воспроизведения UDP Индикатор / значок Android ExpandableListView всегда растягивается

Как создать намерение Android, которое несет данные?

Возможно, я неправильно понял, как предполагается использовать намерения, поэтому я мог бы попросить здесь не того. Если это так, пожалуйста, помогите мне на правильном пути с этим в любом случае …

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

Чтобы облегчить это сообщение, я пытаюсь создать Intent с ACTION_VIEW , но я не могу понять, как передать сообщение этой активности. Невозможно передать строку или обычный объект Java через намерение?

Для чего это стоит того, что я хотел бы сделать:

 getApplication().startActivity(new Intent(MessageService.this, ViewMessageActivity.class, message)); 

Но, конечно, это даже не компилируется.

Solutions Collecting From Web of "Как создать намерение Android, которое несет данные?"

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

 Intent i = new Intent(MessageService.this, ViewMessageActivity.class); i.putExtra("name", "value"); 

И на принимающей стороне:

 String extra = i.getStringExtra("name"); 

Или, чтобы получить все дополнительные функции как комплект, независимо от типа:

 Bundle b = i.getExtras(); 

Существуют различные подписи для putExtra() и различные методы для получения данных в зависимости от его типа. Вы можете увидеть больше здесь: Intent , putExtra .

EDIT: Чтобы передать объект, он должен реализовать Parcelable или Serializable , поэтому вы можете использовать одну из следующих подписей:

PutExtra (имя строки, значение Serializable)

PutExtra (Имя строки, Исходное значение)

Для добавления информации в набор намерений вы можете сделать следующее:

  Intent i = new Intent(MessageService.this, ViewMessageActivity.class); i.putExtra("message", "value"); startActivity(i); 

Затем в действии вы можете получить следующее:

  Bundle extras = getIntent().getExtras(); String message = extras.getString("message"); 

Запуск активности из вашей службы каждый раз, когда будет получено новое сообщение, может быть не таким, каким вы хотите. Например, если вы просматриваете другое действие, вы будете прерваны новым сообщением.

Вы можете использовать sendBroadcast (намерение) вместе с BroadcastReceiver для уведомления о том, что новое сообщение получено.