I used FireBase could messaging in my application and I want when the user receive message the activity fragment change. I did the following code for that but i don't know why it give me error on getFragmentManager that it because i don't have activity context or something like that.
public class googleFirebaseMessageService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
switch (remoteMessage.getData().get("message"))
{
case "invoices_ready":
SharedPreferences preferences=getSharedPreferences("invoices_ready",MODE_PRIVATE);
SharedPreferences.Editor editor=preferences.edit();
editor.putString("pr_id",remoteMessage.getData().get("pr_id").toString());
editor.commit();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.root_menu_fragment, new _step4_FragmentDrugInfo());
transaction.addToBackStack("mapView");
transaction.commit();
showNotification(remoteMessage.getData().get("message"));
break;
}
}
private void showNotification(String messageBody) {
Intent intent = new Intent( this , splash.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultIntent = PendingIntent.getActivity( this , 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri notificationSoundURI = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder( this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Android Tutorial Point FCM Tutorial")
.setContentText(messageBody)
.setAutoCancel( true )
.setSound(notificationSoundURI)
.setContentIntent(resultIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mNotificationBuilder.build());
}
}