title: Open Notification message from FCM as link/URL in Android Application if there is URL in the message of Notification
body: <p>PUSH Notification code using FCM sends title and message as notification text in Android and when i click on the Text, It takes me to the APP front page (in APP)
  I am sending a URL as message in Notification so that someone clicks on the notification it "should open in app and open the appropriate page (as in the link) in app)</p>
  
  <p><strong>Notification after FCM Push</strong></p>
  
  <p>Title For Ex- The Climate Change impact</p>
  
  <p>Message as URL For Ex - <a href="https://example.com/dsfdsfdsfdsf" rel="nofollow noreferrer">https://example.com/dsfdsfdsfdsf</a> (pertinent to the URL which is dynamic)</p>
  
  <p>I want to Open the URL in the APP instead of just opening the APP after clicking the URL. Kindly facilitate with the updated code</p>
  
  <p>What changes should i do to achieve the same.</p>
  
  <p>MainActivity</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity {
  
      private static final String TAG = MainActivity.class.getSimpleName();
      private BroadcastReceiver mRegistrationBroadcastReceiver;
      private TextView txtRegId, txtMessage;
      ProgressBar progressBar;
      WebView webView;
      String url = "https://example.com";
      TextView textView;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          txtRegId = (TextView) findViewById(R.id.txt_reg_id);
          txtMessage = (TextView) findViewById(R.id.txt_push_message);
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Make to run your application only in portrait mode
          //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // Make to run your application only in LANDSCAPE mode
  
  
          progressBar = (ProgressBar) findViewById(R.id.progressBar);
          webView = (WebView) findViewById(R.id.webView);
          textView = (TextView) findViewById(R.id.textView1212);
          webView.setWebViewClient(new MyWebViewClient());
          WebSettings browserSetting = webView.getSettings();
          browserSetting.setJavaScriptEnabled(true);
          browserSetting.setGeolocationEnabled(true);
          webView.setWebChromeClient(new WebChromeClient() {
  
              public void onProgressChanged(WebView view, int progress) {
  
                  progressBar.setProgress(progress);
                  textView.setText(progress + " %");
  
              }
          });
  
          mRegistrationBroadcastReceiver = new BroadcastReceiver() {
              @Override
              public void onReceive(Context context, Intent intent) {
  
                  // checking for type intent filter
                  if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) {
                      // gcm successfully registered
                      // now subscribe to `global` topic to receive app wide notifications
                      FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL);
  
  
  
                  } else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) {
                      // new push notification is received
  
                      String message = intent.getStringExtra("message");
  
                      Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show();
  
                      txtMessage.setText(message);
                  }
              }
          };
  
          webView.loadUrl(url);
      }
  
  
  
        // Fetches reg id from shared preferences
      // and displays on the screen
      @Override
      public void onBackPressed() {
          if(webView.canGoBack()) {
              webView.goBack();
          } else {
              super.onBackPressed();
          }
      }
  
      @Override
      protected void onResume() {
          super.onResume();
  
          // register GCM registration complete receiver
          LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                  new IntentFilter(Config.REGISTRATION_COMPLETE));
  
          // register new push message receiver
          // by doing this, the activity will be notified each time a new message arrives
          LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                  new IntentFilter(Config.PUSH_NOTIFICATION));
  
          // clear the notification area when the app is opened
          NotificationUtils.clearNotifications(getApplicationContext());
      }
      @Override
      protected void onPause() {
          LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
          super.onPause();
      }
      private class MyWebViewClient extends WebViewClient {
  
  
          @Override
          public void onPageStarted(WebView view, String url, Bitmap favicon) {
              //progressBar.setVisibility(View.VISIBLE);
              super.onPageStarted(view, url, favicon);
          }
  
  
          @Override
          public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if (url != null &amp;&amp; url.startsWith("whatsapp://")) {
                  view.getContext().startActivity(
                          new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                  return true;
              } else {
                  return false;
              }
  
              //progressBar.setVisibility(View.VISIBLE);
  
  
              //return super.shouldOverrideUrlLoading(view, url);
          }
  
          @Override
          public void onPageFinished(WebView view, String url) {
              super.onPageFinished(view, url);
              //progressBar.setVisibility(View.GONE);
          }
      }
  
  }
  </code></pre>
  
  <p>FirebaseMessageService</p>
  
  <pre><code>public class    MyFirebaseMessagingService extends FirebaseMessagingService {
  
      private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
  
      private NotificationUtils notificationUtils;
  
      @Override
      public void onMessageReceived(RemoteMessage remoteMessage) {
          Log.e(TAG, "From: " + remoteMessage.getFrom());
  
          if (remoteMessage == null)
              return;
  
          // Check if message contains a notification payload.
          if (remoteMessage.getNotification() != null) {
              Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
              handleNotification(remoteMessage.getNotification().getBody());
          }
  
          // Check if message contains a data payload.
          if (remoteMessage.getData().size() &gt; 0) {
              Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString());
  
              try {
                  JSONObject json = new JSONObject(remoteMessage.getData().toString());
                  handleDataMessage(json);
              } catch (Exception e) {
                  Log.e(TAG, "Exception: " + e.getMessage());
              }
          }
      }
  
      private void handleNotification(String message) {
          if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
              // app is in foreground, broadcast the push message
              Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
              pushNotification.putExtra("message", message);
              LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
  
              // play notification sound
              NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
              notificationUtils.playNotificationSound();
          }else{
              // If the app is in background, firebase itself handles the notification
          }
      }
  
      private void handleDataMessage(JSONObject json) {
          Log.e(TAG, "push json: " + json.toString());
  
          try {
              JSONObject data = json.getJSONObject("data");
  
              String title = data.getString("title");
              String message = data.getString("message");
              boolean isBackground = data.getBoolean("is_background");
              String imageUrl = data.getString("image");
              String timestamp = data.getString("timestamp");
              JSONObject payload = data.getJSONObject("payload");
  
              Log.e(TAG, "title: " + title);
              Log.e(TAG, "message: " + message);
              Log.e(TAG, "isBackground: " + isBackground);
              Log.e(TAG, "payload: " + payload.toString());
              Log.e(TAG, "imageUrl: " + imageUrl);
              Log.e(TAG, "timestamp: " + timestamp);
  
  
              if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
                  // app is in foreground, broadcast the push message
                  Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
                  pushNotification.putExtra("message", message);
                  LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
  
                  // play notification sound
                  NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
                  notificationUtils.playNotificationSound();
              } else {
                  // app is in background, show the notification in notification tray
                  Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
                  resultIntent.putExtra("message", message);
  
                  // check for image attachment
                  if (TextUtils.isEmpty(imageUrl)) {
                      showNotificationMessage(getApplicationContext(), title, message, timestamp, resultIntent);
                  } else {
                      // image is present, show notification with image
                      showNotificationMessageWithBigImage(getApplicationContext(), title, message, timestamp, resultIntent, imageUrl);
                  }
              }
          } catch (JSONException e) {
              Log.e(TAG, "Json Exception: " + e.getMessage());
          } catch (Exception e) {
              Log.e(TAG, "Exception: " + e.getMessage());
          }
      }
  
      /**
       * Showing notification with text only
       */
      private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) {
          notificationUtils = new NotificationUtils(context);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
          notificationUtils.showNotificationMessage(title, message, timeStamp, intent);
      }
  
      /**
       * Showing notification with text and image
       */
      private void showNotificationMessageWithBigImage(Context context, String title, String message, String timeStamp, Intent intent, String imageUrl) {
          notificationUtils = new NotificationUtils(context);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
          notificationUtils.showNotificationMessage(title, message, timeStamp, intent, imageUrl);
      }
  }
  </code></pre>