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

United Nations Diabetes Day | A Century of Insulin in China

Insulin was discovered in 1921 and is considered ...

Behind Google's "100 million times faster": How is quantum computing achieved?

Recently, Google launched the D-Wave quantum compu...

7 aspects that a complete operation plan should include

Operations are basically a process of constantly ...

How to build a new media operation matrix?

When the number of user groups of a public accoun...

Advertising case in wedding photography industry!

During the epidemic, the wedding photography indu...

How much does it cost to join a check-in app in Xiantao?

What is the price to join the Xiantao Check-in Mi...