Урок 99. Service. Уведомления - notifications
Урок 99. Service. Уведомления - notifications
В этом уроке:
- шлем уведомление из сервиса
Click here to read this article!
- шлем уведомление из сервиса
Click here to read this article!
Последний раз редактировалось damager82 21 дек 2017, 01:49, всего редактировалось 15 раз.
Re: Урок 99. Service. Уведомления (Notifications)
Добрый день!
Подскажите, пожалуйста, почему |= , а не просто =
в notif.flags |= Notification.FLAG_AUTO_CANCEL;
Подскажите, пожалуйста, почему |= , а не просто =
в notif.flags |= Notification.FLAG_AUTO_CANCEL;
Re: Урок 99. Service. Уведомления (Notifications)
Потому что мы флаг добавляем к флагам. Нужно сохранить уже установленные флаги.Jane писал(а):Добрый день!
Подскажите, пожалуйста, почему |= , а не просто =
в notif.flags |= Notification.FLAG_AUTO_CANCEL;
Тут есть неплохой материал на эту тему: http://www.codeproject.com/Articles/137 ... Enum-Flags
Re: Урок 99. Service. Уведомления - notifications
Подскажите пожалуйста, можно ли по клику на уведомлении вызвать любое другое активити. Если да, то как?
Re: Урок 99. Service. Уведомления - notifications
Когда создаете Intent (третья часть), указываете там данные для вызова нужного вам Activity. Оно в итоге и вызовется...or8it писал(а):Подскажите пожалуйста, можно ли по клику на уведомлении вызвать любое другое активити. Если да, то как?
Re: Урок 99. Service. Уведомления - notifications
Прочитал все уроки по Сервисам. К сожалению, так и не нашел гибкого способа ДВУСТОРОННЕГО обмена данными с сервисом. Зачастую нужно общаться с сервисом именно в двух направлениях: чтобы и у Активити был "тунель" к сервису, и у сервиса был тунель к активити. При этом неплохо было бы иметь возможность передавать ЛЮБЫЕ объекты в обе стороны, не ограничиваясь всеми putExtra, которые можно положить в интент.
Re: Урок 99. Service. Уведомления - notifications
на счёт гибкой передачи данных, так это по любому должен быть некий двусторонний канал, без этого никуда. На счёт любых объектов, я не уверен но видел как сначала Bundle заполняется а потом передаётся в активити, при этом любые объекты, в общем если не срочно то завтра вспомню/пересмотрю примеры.Observer писал(а):Прочитал все уроки по Сервисам. К сожалению, так и не нашел гибкого способа ДВУСТОРОННЕГО обмена данными с сервисом. Зачастую нужно общаться с сервисом именно в двух направлениях: чтобы и у Активити был "тунель" к сервису, и у сервиса был тунель к активити. При этом неплохо было бы иметь возможность передавать ЛЮБЫЕ объекты в обе стороны, не ограничиваясь всеми putExtra, которые можно положить в интент.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 99. Service. Уведомления - notifications
Есть способ через Handler и Messanger. Сейчас не найду наверно где видел, но на просторах документации по Андройду где-то было "упоминание".rezak90 писал(а):на счёт гибкой передачи данных, так это по любому должен быть некий двусторонний канал, без этого никуда. На счёт любых объектов, я не уверен но видел как сначала Bundle заполняется а потом передаётся в активити, при этом любые объекты, в общем если не срочно то завтра вспомню/пересмотрю примеры.
Если вкраце, то там у обоих (Активити и Сервиса), есть обьект Messenger со своим Handler`ом. В этом Хендлере, в метод Handler.handleMessage(Message msg) передается объект Message. А в объект Message можно положить объект, который нужно передать, через Message.obj = yourObject. Сюда же можно положить КОД того, что требуется сделать, через Message.what = START_DOWNLOAD. И сюда же можно положить такой же объект Messanger, которому нужно ответить о результатах или вообще о чём либо, через Message.replyTo = myMessangerInActivity.
Конечно, если много команд, следовательно много what и придётся городить switch-е подобные конструкции, но это пока единственное что я нашёл для обмена чем хочешь, без имплементирования Сериалайзбл, Парселебл и прочих хитрых интерфейсов.
Если вам известны какие то другие способы - было бы интересно их почитать
-
- Сообщения: 1
- Зарегистрирован: 07 авг 2012, 05:53
Re: Урок 99. Service. Уведомления - notifications
Можно ли как то отследить процесс установки разных приложений и автоматически посылать уведомления "Было установлено приложение $name, вы согласны оставить его?". Чтобы не приходилось нажимать кнопки Start and Stop.
Помогите пожалуйста.
Помогите пожалуйста.
Re: Урок 99. Service. Уведомления - notifications
Кстати, обратите внимание, что конструктор Notification (int icon, CharSequence tickerText, long when) обьявлен как deprecated, взамен предлагают Notification.Builder (для API 11 и выше)
Re: Урок 99. Service. Уведомления - notifications
А почему отдельный процесс, а не отдельный поток?
Re: Урок 99. Service. Уведомления - notifications
Не появляются уведомления (((
Вроде все, как в примере...
Активити
МайСервис
Вроде все, как в примере...
Активити
Код: Выделить всё
package ru.startandroid.develop.p0991servicenotification;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
public class Activity_Main extends Activity {
public final static String FILE_NAME = "filename";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
TextView tv=(TextView)findViewById(R.id.tv);
Intent intent=getIntent();
String fileName=intent.getStringExtra(FILE_NAME);
if (!TextUtils.isEmpty(fileName)) tv.setText(fileName);
}
public void onClickStart(View v){
startService(new Intent(this,MyService.class));
}
public void onClickStop(View v){
stopService(new Intent(this,MyService.class));
}
}
Код: Выделить всё
package ru.startandroid.develop.p0991servicenotification;
import java.util.concurrent.TimeUnit;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class MyService extends Service {
NotificationManager nm;
public void onCreate(){
super.onCreate();
nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
public int onStartComand(Intent intent, int flags, int startId){
try{
TimeUnit.SECONDS.sleep(5);
}catch(InterruptedException e){
e.printStackTrace();
}
sendNotif();
return super.onStartCommand(intent, flags, startId);
}
void sendNotif(){
//Первая часть
Notification notif=new Notification(R.drawable.ic_launcher,"Text in status bar",System.currentTimeMillis());
//Третья часть
Intent intent=new Intent(this,Activity_Main.class);
intent.putExtra(Activity_Main.FILE_NAME, "someFile");
PendingIntent pIntent=PendingIntent.getActivity(this, 0, intent, 0);
//Вторая часть
notif.setLatestEventInfo(this, "Заголовок уведомления", "Тексттексттекст уведомления", pIntent);
//Удаление уведомления после нажатия
notif.flags|=Notification.FLAG_AUTO_CANCEL;
//Отправка
nm.notify(1,notif);
}
public IBinder onBind(Intent intent) {
return null;
}
}
Re: Урок 99. Service. Уведомления - notifications
Все супер, спасибо за статью, у меня только не вызвалась вибрация, а все остальное сработало как часы. =)
Самая оптимальная установка
UPD: разобрался с вибро, нужно было программе получить права на вибро в манифесте:
Думаю стоит это указать в примечаниях к статье.
Самая оптимальная установка
Код: Выделить всё
notif.defaults = Notification.DEFAULT_ALL;
Код: Выделить всё
<uses-permission android:name="android.permission.VIBRATE"/>
Re: Урок 99. Service. Уведомления - notifications
А ты делал, все как в уроке? Блин...почему же у меня ничего не вылезает (
Re: Урок 99. Service. Уведомления - notifications
Подскажите: как при клике на уведомление вызвать тот же самый экземпляр Activity?
Опишу проблему: Из активити запускается сервис который вызывает уведомление, однако при клике на уведомление открывается тоже самое Активити, НО новое т.е. в итоге имеем 2 одинаковые запущенные активи, а нужно чтобы из уведомление вызывалось только 1 активити
Опишу проблему: Из активити запускается сервис который вызывает уведомление, однако при клике на уведомление открывается тоже самое Активити, НО новое т.е. в итоге имеем 2 одинаковые запущенные активи, а нужно чтобы из уведомление вызывалось только 1 активити
Re: Урок 99. Service. Уведомления - notifications
Вот сам сегодня с этим же столкнулся, решение тут: viewtopic.php?f=35&t=1159etlt писал(а):Подскажите: как при клике на уведомление вызвать тот же самый экземпляр Activity?
Опишу проблему: Из активити запускается сервис который вызывает уведомление, однако при клике на уведомление открывается тоже самое Активити, НО новое т.е. в итоге имеем 2 одинаковые запущенные активи, а нужно чтобы из уведомление вызывалось только 1 активити
Re: Урок 99. Service. Уведомления - notifications
Нет, я просто на основе урока добавил функционал в свой сервис.powercat писал(а):А ты делал, все как в уроке? Блин...почему же у меня ничего не вылезает (
Re: Урок 99. Service. Уведомления - notifications
Блин...чего ж у меня не хочет работать (((((
Re: Урок 99. Service. Уведомления - notifications
Пишет в логе
show statusicon on inactive inputconnection
show statusicon on inactive inputconnection
Re: Урок 99. Service. Уведомления - notifications
В общем - жду ответа автора урока, в чем проблема у меня может быть?