Как сделать Notification через startForeground?
загвоздка в том, что Notification не поддерживается api старше 11.
Можно использовать Notification.Builder - но он для Android v3 и старше.
есть универсальный NotificationCompat.Builder, но startForeground его не принимает, говорит "не надо мне NotificationCompat.Builder, подавай мне только Notification"
Вот, и как быть не ясно. Помогите, кто знает, советом.
Notification через startForeground
Re: Notification через startForeground
Так и подавайте ему Notification. Создавайте объект Notification при помощи Builder'а если Api Level >= 11 а в противном случае делайте это через deprecated конструктор
Или вообще не проверяйте Api level и всегда юзайте этот конструктор. Работать будет ибо есть обратная совместимость
Код: Выделить всё
public Notification (int icon, CharSequence tickerText, long when)
Re: Notification через startForeground
так я сделал через Notification и на Android 2.1 все работает. На android 4.1 работает несмотря на то, что eclipse ругается, но не так как надо.
на 2.1 сервис делается foreground (как и было задумано), а на 4.1 сервис становится background, а надо foreground.
на 2.1 сервис делается foreground (как и было задумано), а на 4.1 сервис становится background, а надо foreground.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Notification через startForeground
Что-то я не увидел у себя проблемы. Использую 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]
[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]
Re: Notification через startForeground
как его потом в foreground запихнуть, этот NotificationCompat.Builder ?
startForeground его не хочет, а хочет только обычный Notification...
startForeground его не хочет, а хочет только обычный Notification...