Pitfalls you may encounter when using Android notifications

Pitfalls you may encounter when using Android notifications

I've recently encountered some issues with Android notifications, which I didn't know about before.

[[236632]]

First paste a piece of code

  1. /**
  2. * Create a notification bar management tool
  3. */
  4. NotificationManager notificationManager = (NotificationManager) mContext.getSystemService
  5. (Context.NOTIFICATION_SERVICE);
  6.  
  7. notificationManager.cancel(105);
  8.  
  9. Intent equipListPage = new Intent(mContext, CommonActivity.class);
  10. equipListPage.putExtra( "fragmentName" , EquipListFragment.class.getName());
  11. equipListPage.putExtra( "json" , JSON.toJSONString(list));
  12. PendingIntent pi = PendingIntent.getActivity(mContext, 0, equipListPage, null );
  13.  
  14. /**
  15. * Instantiate the notification bar constructor
  16. */
  17. NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext);
  18. Notification notification = mBuilder
  19. .setAutoCancel( true )
  20. .setContentTitle( "test" )
  21. .setContentText( "Discover " + list.size ( ) + " devices around you " )
  22. .setContentIntent(pi)
  23. .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.max_ic_launcher))
  24. .setSmallIcon(R.drawable.max_ic_launcher)
  25. .setWhen(System.currentTimeMillis())
  26. .setDefaults(Notification.DEFAULT_SOUND)
  27. .setPriority(NotificationCompat.PRIORITY_MAX)
  28. .build();
  29. notifyId = ( int ) System.currentTimeMillis();
  30. notificationManager.notify(105, notification);

The purpose is to notify users of something they have found around them, and then the user clicks on it to display a list. I quickly wrote the code and tested it. Then I released the version, but users kept saying that the list they clicked on was the same every time, which puzzled me. I thought it was not my problem, but I tried it myself. It was embarrassing. Sure enough, there was a problem, that is, the transmitted data was not updated.

How to solve

The problem is this sentence

  1. PendingIntent.getActivity(mContext, 0, equipListPage, null );

There are four parameters in total. See the explanation of the source code.

  1. * @param context The Context in which this PendingIntent should start
  2. * the activity.
  3. * @param requestCode Private request code for the sender
  4. * @param intent Intent of the activity to be launched.
  5. * @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
  6. * {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},

There are four FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT

I used FLAG_UPDATE_CURRENT to solve the problem. It is mainly used to update messages. For example, if you send a notification message with "123", and before clicking it, another notification message is sent with "345", then you click on both messages and get "345". So my problem was naturally solved.

Question 2

Later, there is another requirement to add a notification message to display different applications. That is, the message above, notification 1 needs to get "123", and notification 2 needs to get "456". What should we do? This requires the use of the second flag. When using FLAG_CANCEL_CURRENT, the above steps are still used. At this time, you will find that when you click on message 1, there is no response, but the second one can be clicked. The reason lies in the second parameter. You need to define a different requestCode for each different message, and the problem can be solved.

<<:  How to get "Apple Recommended" for a good game? There is a routine

>>:  2-Minute Coding Tip: Don't Use Loops in Your Code

Recommend

The sun sneezes, and the spacecraft is caught in the crossfire

The increasing frequency of human space activitie...

What's a week of constipation? It can be "constipated" for a whole year!

The dilemma of constipation, We all have encounte...

Pick-up girl tutorial video Baidu network disk, pick-up girl tutorial resources

Everyone knows that women are easy to change. The...

Promotion strategy of Sina Weibo Fanstong

Someone told me that Sina Weibo’s scale is not up...

Here are four tips to help you avoid wasting money on mobile apps!

You don’t have to build every mobile app yourself...

Often feel weak and listless? Maybe you are not eating right...

This article was reviewed by Pa Li Ze, chief phys...

How to operate KOL influencer marketing?

As more and more brands use internet celebrities ...

6 flagships comparison: Galaxy S6 beats iPhone 6

The Galaxy S6/S6 Edge has not only made great imp...