Push notification need to open a specific activity
If notification clicks on app background state, then that will open app launcher activity. In launcher activity you need to check if there is any pending intent from notification and execute that.
Try this in your launcher activity(MainActivity).
Intent intent=new Intent();
Intent fromIntent = getIntent();
if (fromIntent.getExtras()!=null){
try {
Map<String,String> opendata = remoteMessage.getData();
String actionValue = opendata.get("openactivity");
switch (actionValue){
case "Activity1":
intent=new Intent(this, Activity1.class);
break;
case "Activity2":
intent=new Intent(this, Activity2.class);
break;
default:
intent = new Intent(MainActivity.this, DefaultActivity.class);
break
}
} catch(Exception e){
intent = new Intent(MainActivity.this, DefaultActivity.class);
}
} else{
intent = new Intent(MainActivity.this, DefaultActivity.class);
}
startActivity(intent);
How to open specific activity from push notification in Android&FCM?
You will need to use Android Deep linking.
Your notification (FCM) should have a payload of some data (Message ID all depends on your design) for the given screen you want to consume in this case your chat Activity.
The chat Activity will need to have a host and schema declared in the manifest, below is the instructions and code for Deep Linking:
https://developer.android.com/training/app-links/deep-linking
Happy coding.
How to open a specific activity on push notification tapped?
private void sendNotification(String msg) {
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
long notificatioId = System.currentTimeMillis();
Intent intent = new Intent(getApplicationContext(), TestActivity.class); // Here pass your activity where you want to redirect.
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent contentIntent = PendingIntent.getActivity(this, (int) (Math.random() * 100), intent, 0);
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP){
currentapiVersion = R.mipmap.ic_notification_lolipop;
} else{
currentapiVersion = R.mipmap.ic_launcher;
}
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(currentapiVersion)
.setContentTitle(this.getResources().getString(R.string.app_name))
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setContentText(msg)
.setAutoCancel(true)
.setPriority(Notification.PRIORITY_HIGH)
.setDefaults(Notification.FLAG_AUTO_CANCEL | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND)
.setContentIntent(contentIntent);
mNotificationManager.notify((int) notificatioId, notificationBuilder.build());
}
Related Topics
Authentication Using Facebook at First and Then Google Causes an Error in Firebase for Android
Continually Running Background Service
Touch and Drag Image in Android
Firebase Onmessagereceived Not Called When App Is in the Background
Android Java.Lang.Illegalstateexception: Couldn't Read Row 0, Col 0 from Cursorwindow
No Adapter Attached; Skipping Layout
How to Change Line Color in Edittext
How to Create an Animated Gif from Jpegs in Android (Development)
How to Implement an Android:Background That Doesn't Stretch
Android Scale Animation on View
How to Show and Hide Actionbar with Appcompat V.7
Surfacetexture's Onframeavailable() Method Always Called Too Late
How to Set Alarm in Android Programmatically
Android Bluetoothdevice.Getname() Return Null
What's the Maximum Size for an Android Shared Preference Value
Can the Android Emulator Record and Play Back Audio Using Pc Hardware