Избегайте повторного создания активности при нажатии на уведомление в android

Теперь я работаю над напоминанием о уведомлении, если пользователь нажмет на уведомление, он откроет приложение.

Однако проблема заключается в том, что если я уже открываю приложение, когда я нажимаю на уведомление, он все равно создает новое действие, поэтому всего два действия.

Как я могу добиться такого? Если пользователь уже открыл приложение, просто ничего не делайте, если нет, то откройте приложение. Спасибо за помощь.

public class AlarmService extends Service {
 private static final int MY_NOTIFICATION_ID = 1;
 NotificationManager notificationManager;
 Notification myNotification;
 Vibrator v;

 public AlarmService() {
 }

 @Override
 public IBinder onBind(Intent intent) {
 return null;
 }

 @Override
 public void onStart(Intent intent, int startId) {
 v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
 v.vibrate(5000);

 Context context = getApplicationContext();
 Intent ******** = new Intent(this, SplashScreen.class);
 ********.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
 Intent.FLAG_ACTIVITY_SINGLE_TOP);
 PendingIntent pendingIntent =
 PendingIntent.getActivity(this, 0, ********, Intent.FLAG_ACTIVITY_SINGLE_TOP);

 myNotification = new Notification.Builder(context)
 .setContentTitle(getResources().getString(R.string.notify_title))
 .setContentText(getResources().getString(R.string.notify_msg) + "\n" 
 + getResources().getString(R.string.reminder_1) + "aaa\n"
 + getResources().getString(R.string.reminder_2) + "vvv\n"
 + getResources().getString(R.string.reminder_3) + "cccc\n"
 + getResources().getString(R.string.reminder_5) + "dddd\n")
 .setContentIntent(pendingIntent)
 .setDefaults(Notification.DEFAULT_SOUND).setAutoCancel(false)
 .setSmallIcon(R.drawable.ic_launcher).build();

 notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 notificationManager.notify(MY_NOTIFICATION_ID, myNotification);
 }

}
1 ответ

Попробуйте ввести код ниже.

public static void startNotification(Service service, String message) {
 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(service);
 if(prefs.getBoolean("pref_NotificationDisplayed", true)){
 // Creates an Ongoing Notification
 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(service.getApplicationContext()).setSmallIcon(R.drawable.ic_launcher).setContentTitle("Title").setContentText(message);

 Intent toLaunch = new Intent(service.getApplicationContext(),MainActivity.class);
 toLaunch.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
 PendingIntent intentBack = PendingIntent.getActivity(service.getApplicationContext(), 0,toLaunch, PendingIntent.FLAG_UPDATE_CURRENT);

 //PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
 mBuilder.setContentIntent(intentBack);
 NotificationManager mNotificationManager = (NotificationManager) service.getSystemService(Context.NOTIFICATION_SERVICE);

 // Send Notification
 Notification primaryNotification = mBuilder.build();
 primaryNotification.flags = Notification.FLAG_ONGOING_EVENT;
 mNotificationManager.notify(10001,primaryNotification);
 }

 }

Это оно...

licensed under cc by-sa 3.0 with attribution.