package com.example.creation;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;

import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;

public class MainActivity extends Activity {
  <caret>

  public Action getIndexApiAction() {
    Thing object = new Thing.Builder()
      .setName("Main Page")
      .setUrl(Uri.parse("http://www.example.com/main"))
      .build();
    return new Action.Builder(Action.TYPE_VIEW)
      .setObject(object)
      .setActionStatus(Action.STATUS_TYPE_COMPLETED)
      .build();
  }

  @Override
  public void onStart() {
    super.onStart();
    GoogleApiClient client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
    client.connect();
    AppIndex.AppIndexApi.start(client, getIndexApiAction());
  }
}
