package com.example.creation;

import a.Action;
import a.FirebaseUserActions;
import a.Actions;
import a.FirebaseAppIndex;
import a.Indexable;

import android.app.Activity;

public class MainActivity extends Activity {

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

  @Override
  public void onStart() {
    super.onStart();

    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
    com.google.firebase.appindexing.FirebaseAppIndex.getInstance().update(new com.google.firebase.appindexing.Indexable.Builder().setName("Main").setUrl("http://www.example.com/main").build());
    com.google.firebase.appindexing.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.
    com.google.firebase.appindexing.FirebaseUserActions.getInstance().end(getIndexApiAction());
    super.onStop();
  }
}
