Hallo!
У меня вопрос по поводу уведомлений.
Я хочу создать приложение, которое анализирует полученные SMS для определенного контента.Если смс содержит определенный контент, он анализируется и данные извлекаются.Уведомление должно быть создано, и оно должно отображаться.Когда пользователь выбирает уведомление, приложение должно вызываться с извлеченными данными.Если приложение не запущено, оно должно быть запущено.Если он уже запущен, необходимо отобразить экземпляр и обработать информацию.
Чтобы решить эту проблему, я сделал следующее: Приемник широковещательной передачи прослушивает SMS-сообщения и анализирует их.Для вызова приложения я использую следующий код:
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, tickerText, when); Bundle bundleNotification = creatingNotificationBundle(...);
Intent notificationIntent = new Intent(Intent.ACTION_MAIN); notificationIntent.setClassName(...); notificationIntent.putExtras(bundleNotification);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify((int) System.currentTimeMillis(), notification);
Активность, которую я вызываю, обрабатывает Intent в методе onCreate (...).Это прекрасно работает, когда приложение не работает.Когда у меня уже запущен экземпляр, он вызывается и данные не передаются (или я не перезаписываю правильные методы).Я видел, что onResume () вызывается.Но этот метод не имеет намерения в качестве параметра.Какова лучшая идея для решения этой проблемы?
Я сделал (на мой взгляд) очень грязный обходной путь, чтобы получить эту работу:
- Я создал временное действие
- Я делаю тот же код, что и выше, за исключением того, что я вызываю это новое действие и устанавливаю флаги messagesIntent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK) иtificationIntent.addFlags (Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
- эта операция отправляет сначала широковещательную рассылкучем намерение и пересылка ранее проанализированных данных.
Используя этот способ, основное приложение всегда получает данные.Если он уже запущен, он получает широковещательную рассылку и выходит на передний план с намерением, если он не запущен, он получает данные из намерения в методе onCreate (...).Но я не думаю, что это правильное решение для этой проблемы, так как это выглядит довольно грязно, чтобы создать фиктивную операцию только для перенаправления данных и больше ничего не делать.
Любые идеи и предложения будут высоко оценены.
Спасибо