How to apply a notification action on a click on a specific activity in android?

Android: how to associate notification action with activity dynamically in Android manifest file?

Especially for integration with fire. Please give an offer. Thanks.

+5
source share
2 answers

Receiving a custom message in a notification and in accordance with KeyWork True or false or your specific word go to action Public class MyFirebaseMessagingService extends FirebaseMessagingService {

private static final String TAG = "FirebaseMessageService"; Bitmap bitmap; /** * Called when message is received. * * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. */ @Override public void onMessageReceived(RemoteMessage remoteMessage) { // There are two types of messages data messages and notification messages. Data messages are handled // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app // is in the foreground. When the app is in the background an automatically generated notification is displayed. // When the user taps on the notification they are returned to the app. Messages containing both notification // and data payloads are treated as notification messages. The Firebase console always sends notification // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options // Log.d(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); } // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } //The message which i send will have keys named [message, image, AnotherActivity] and corresponding values. //You can change as per the requirement. //message will contain the Push Message String message = remoteMessage.getData().get("message"); //imageUri will contain URL of the image to be displayed with Notification String imageUri = remoteMessage.getData().get("image"); //If the key AnotherActivity has value as True then when the user taps on notification, in the app AnotherActivity will be opened. //If the key AnotherActivity has value as False then when the user taps on notification, in the app MainActivity will be opened. String TrueOrFlase = remoteMessage.getData().get("AnotherActivity"); //To get a Bitmap image from the URL received bitmap = getBitmapfromUrl(imageUri); sendNotification(message, bitmap, TrueOrFlase); } /** * Create and show a simple notification containing the received FCM message. */ private void sendNotification(String messageBody, Bitmap image, String TrueOrFalse) { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("AnotherActivity", TrueOrFalse); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setLargeIcon(image)/*Notification icon image*/ .setSmallIcon(R.drawable.firebase_icon) .setContentTitle(messageBody) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(image))/*Notification with Image*/ .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } This is AnotherActivity 

// If a notification is listened, any data accompanying the notification // message is available for additional purposes. In this project, a launcher // intentional dismissal when listening to a notification, so any accompanying data will // be processed here. If you want a different intention to fire, set the click_action // field of the notification message with the desired intention. Launcher Institution // Used when click_action is not specified. // // We process the possible data accompanying the notification. if (getIntent (). getExtras ()! = null) {

  for (String key : getIntent().getExtras().keySet()) { String value = getIntent().getExtras().getString(key); if (key.equals("AnotherActivity") && value.equals("True")) { Intent intent = new Intent(this, AnotherActivity.class); intent.putExtra("value", value); startActivity(intent); finish(); } } } 

This is data

 { "data": { "image": "https://ibin.co/2t1lLdpfS06F.png", "message": "Firebase Push Message Using API" "AnotherActivity": "True" }, "to" : "f25gYF3***********************HLI" } 
+4
source

In order to achieve the functionality of opening an activity, after receiving a notification, this activity must be represented by a intent intent-filter in the manifest in order to listen to the action.

In the notification, along with the payload, the action that performs the event must be sent. Intent can be launched in the receiver with an action that opens the action, even if the application is in backgroud or closed.

+2
source

Source: https://habr.com/ru/post/1259998/


All Articles