Урок 99. Service. Уведомления - notifications
Добавлено: 25 июл 2012, 23:00
В этом уроке:
- шлем уведомление из сервиса
Click here to read this article!
- шлем уведомление из сервиса
Click here to read this article!
Добро пожаловать на форум сайта
http://forum.startandroid.ru/
Потому что мы флаг добавляем к флагам. Нужно сохранить уже установленные флаги.Jane писал(а):Добрый день!
Подскажите, пожалуйста, почему |= , а не просто =
в notif.flags |= Notification.FLAG_AUTO_CANCEL;
Когда создаете Intent (третья часть), указываете там данные для вызова нужного вам Activity. Оно в итоге и вызовется...or8it писал(а):Подскажите пожалуйста, можно ли по клику на уведомлении вызвать любое другое активити. Если да, то как?
на счёт гибкой передачи данных, так это по любому должен быть некий двусторонний канал, без этого никуда. На счёт любых объектов, я не уверен но видел как сначала Bundle заполняется а потом передаётся в активити, при этом любые объекты, в общем если не срочно то завтра вспомню/пересмотрю примеры.Observer писал(а):Прочитал все уроки по Сервисам. К сожалению, так и не нашел гибкого способа ДВУСТОРОННЕГО обмена данными с сервисом. Зачастую нужно общаться с сервисом именно в двух направлениях: чтобы и у Активити был "тунель" к сервису, и у сервиса был тунель к активити. При этом неплохо было бы иметь возможность передавать ЛЮБЫЕ объекты в обе стороны, не ограничиваясь всеми putExtra, которые можно положить в интент.
Есть способ через Handler и Messanger. Сейчас не найду наверно где видел, но на просторах документации по Андройду где-то было "упоминание".rezak90 писал(а):на счёт гибкой передачи данных, так это по любому должен быть некий двусторонний канал, без этого никуда. На счёт любых объектов, я не уверен но видел как сначала Bundle заполняется а потом передаётся в активити, при этом любые объекты, в общем если не срочно то завтра вспомню/пересмотрю примеры.
Код: Выделить всё
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;
}
}
Код: Выделить всё
notif.defaults = Notification.DEFAULT_ALL;
Код: Выделить всё
<uses-permission android:name="android.permission.VIBRATE"/>
Вот сам сегодня с этим же столкнулся, решение тут: viewtopic.php?f=35&t=1159etlt писал(а):Подскажите: как при клике на уведомление вызвать тот же самый экземпляр Activity?
Опишу проблему: Из активити запускается сервис который вызывает уведомление, однако при клике на уведомление открывается тоже самое Активити, НО новое т.е. в итоге имеем 2 одинаковые запущенные активи, а нужно чтобы из уведомление вызывалось только 1 активити
Нет, я просто на основе урока добавил функционал в свой сервис.powercat писал(а):А ты делал, все как в уроке? Блин...почему же у меня ничего не вылезает (