У меня есть Service
, что я хотел использовать функцию startForeground()
в:Bad уведомления в startForeground: contentIntent требуется ошибка на Android 2.3.4
public void putServiceToForeground() {
if (notif == null) {
notif = new NotificationCompat.Builder(this)
.setContentTitle("Location Updates Service")
.setContentText("Getting Location Updates")
.setSmallIcon(R.drawable.ic_launcher)
.setTicker(getText(R.string.location_service_starting))
.build();
}
startForeground(notificationID, notif);
}
public void removeServiceFromForeground() {
if (notif != null && mNotificationManager != null) {
notif.tickerText = getText(R.string.location_service_stopping);
mNotificationManager.notify(notificationID, notif);
}
stopForeground(true);
}
Я запуск и остановку этого в onConnected()
и onDisconnected()
методах моего Service
.
В новых версиях Android
все нормально, и я не получаю ошибки, но в 2.3.4 я получаю ошибку:
FATAL EXCEPTION: main
android.app.RemoteServiceException: Bad notification for startForeground:
java.lang.IllegalArgumentException: contentIntent required: pkg=com.mycomp.app id=678567400
notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x40)
После прочтения на SO об этом, я полагаю, мне нужно, чтобы обеспечить contentIntent
когда пользователь удаляет уведомление? Является ли это нормальным для моего Service
? Не могу ли я просто вернуть пользователя к моему основному Activity
?
Я бы просто хотел вернуть моего пользователя к основной «Деятельности» моего приложения, в котором они могли остановить обновления местоположения. Как я даже ссылаюсь на свою «активность» из моей «службы»? –
@NicHubbard: «Как мне даже ссылаться на мою активность с моей службы?» - вы не «ссылаетесь на [свою] активность», по крайней мере, не на то, как я буду использовать термин «ссылка». Вы создаете «PendingIntent», который приведет пользователя к этой активности. См. Http://developer.android.com/guide/topics/ui/notifiers/notifications.html и http://developer.android.com/training/notify-user/index.html – CommonsWare