Notification через startForeground

Ответить
alex.ok
Сообщения: 12
Зарегистрирован: 11 ноя 2013, 16:30

Notification через startForeground

Сообщение alex.ok » 26 дек 2013, 10:01

Как сделать Notification через startForeground?
загвоздка в том, что Notification не поддерживается api старше 11.
Можно использовать Notification.Builder - но он для Android v3 и старше.
есть универсальный NotificationCompat.Builder, но startForeground его не принимает, говорит "не надо мне NotificationCompat.Builder, подавай мне только Notification"

Вот, и как быть не ясно. Помогите, кто знает, советом.

Аватара пользователя
alexmedv
Сообщения: 29
Зарегистрирован: 29 май 2013, 12:55

Re: Notification через startForeground

Сообщение alexmedv » 26 дек 2013, 10:21

Так и подавайте ему Notification. Создавайте объект Notification при помощи Builder'а если Api Level >= 11 а в противном случае делайте это через deprecated конструктор

Код: Выделить всё

public Notification (int icon, CharSequence tickerText, long when)
Или вообще не проверяйте Api level и всегда юзайте этот конструктор. Работать будет ибо есть обратная совместимость

alex.ok
Сообщения: 12
Зарегистрирован: 11 ноя 2013, 16:30

Re: Notification через startForeground

Сообщение alex.ok » 26 дек 2013, 10:35

так я сделал через Notification и на Android 2.1 все работает. На android 4.1 работает несмотря на то, что eclipse ругается, но не так как надо.
на 2.1 сервис делается foreground (как и было задумано), а на 4.1 сервис становится background, а надо foreground.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Notification через startForeground

Сообщение Mikhail_dev » 26 дек 2013, 16:51

Что-то я не увидел у себя проблемы. Использую NotificationCompat для всех версий. Вот вырезал немного кода со своего класса. Коряво вырезал, но думаю разберетесь
[syntax=java5]
private NotificationCompat.Builder builder;
builder = new NotificationCompat.Builder(context);
public void notifyDevices(String messageText) {
contentIntent = PendingIntent.getActivity(c, DEVICE_ID, iMainActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent)
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
.setSmallIcon(R.drawable.persons)
.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setTicker(messageText)
.setContentTitle(res.getString(R.string.app_name))
.setSound(Uri.parse("android.resource://" + App.getInstance().getPackageName() + "/" + R.raw.khaust))
.setContentText(messageText)
.setDefaults(Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND);
Notification n = builder.build();
mNotificationManager.notify(DEVICE_ID, n);

[/syntax]

alex.ok
Сообщения: 12
Зарегистрирован: 11 ноя 2013, 16:30

Re: Notification через startForeground

Сообщение alex.ok » 27 дек 2013, 14:01

как его потом в foreground запихнуть, этот NotificationCompat.Builder ?
startForeground его не хочет, а хочет только обычный Notification...

Ответить