package com.example.creation;

import android.app.Activity;
import android.os.Bundle;
import com.google.firebase.appindexing.Action;
import com.google.firebase.appindexing.FirebaseUserActions;
import com.google.firebase.appindexing.builders.Actions;

public class MainActivity extends Activity {


  @Override
  protected void onCreate(Bundle savedInstanceState) {
  }

  @Override
  public void onStart() {
    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
    FirebaseUserActions.getInstance().start(getIndexApiAction());
  }

  @Override
  public void onStop() {
    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
    FirebaseUserActions.getInstance().end(getIndexApiAction());
  }

  /**
   * ATTENTION: This was auto-generated to implement the App Indexing API.
   * See https://g.co/AppIndexing/AndroidStudio for more information.
   */
  public Action getIndexApiAction() {
    return Actions.newView("Main", "http://www.example.com/main");
  }
}
