У меня есть адаптер синхронизации, который выполняет некоторую операцию в фоновом режиме. Чтобы сообщить основную информацию о состоянии синхронизации, я использовал широковещательные приемники, поэтому моя активность способна принимать сообщения от адаптера синхронизации. Он работает нормально. Тем не менее, мне также нужно отображать уведомление о строке состояния Android, что указывает на некоторые результаты синхронизации.Системное уведомление от SyncAdapter: onPerformSync
Так что я написал простой метод ответственн для disaply уведомления системы:
private void sendNotification(Context ctx, String message)
{
Intent intent = new Intent(ctx, this.getClass());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(ctx)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Mobile Shopping")
.setContentText(message)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_SOUND | Notification.FLAG_SHOW_LIGHTS)
.setLights(0xff00ff00, 300, 100)
.setPriority(Notification.PRIORITY_DEFAULT);
//.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 , notificationBuilder.build());
}
Тогда выше метод вызывается в onPerform синхронизации:
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult)
{
.................
sendNotification(context, message);
}
Контекст извлекается из конструктора. Он работает без каких-либо проблем, показывается уведомление.
Однако мне также необходимо показать основное действие после того, как пользовательский указатель на уведомлении. Поэтому я считаю, что мне нужно создать PendingIntent и передать его моему строителю уведомлений (как он комментируется в моем коде). Но передать основной объект активности моему адаптеру синхронизации? Уведомление может также отображаться после завершения автоматической синхронизации.
Любые советы?
Если вы показываете уведомление, пользователь должен иметь возможность взаимодействовать с ним, открывая приложение, иначе показ уведомления не является полезным и не должен отображаться вообще. – Aegis