<br />

![](https://developers.google.com/static/admob/images/format-interstitial.svg)

Interstitial ads are full-screen ads that cover the interface of their host
app. They're typically displayed at natural transition points in the flow of
an app, such as between activities or during the pause between levels in a
game. When an app shows an interstitial ad, the user has the choice to either
tap on the ad and continue to its destination or close it and return to the
app.


This guide explains how to integrate interstitial ads into an Android app.

## Prerequisites

- [Set up Google Mobile Ads SDK (Legacy)](https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start.md.txt).
- [Enable test ads](https://developers.google.com/ad-manager/mobile-ads-sdk/android/test-ads.md.txt).

## Load an ad

> [!NOTE]
> **Note:** Make all calls to the Google Mobile Ads SDK (Legacy) on the main thread.

To load an interstitial ad, call the `AdManagerInterstitialAd` static
[`load()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd.md.txt#load(android.content.Context,java.lang.String,com.google.android.gms.ads.AdRequest,com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback)) method and pass in an
`AdManagerInterstitialAdLoadCallback` to receive the loaded ad or any possible
errors. `AdManagerInterstitialAdLoadCallback` uses `LoadAdError` to
provide error details.

### Java

```java
AdManagerInterstitialAd.load(
    this,
    AD_UNIT_ID,
    new AdManagerAdRequest.Builder().build(),
    new AdManagerInterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull AdManagerInterstitialAd interstitialAd) {
        Log.d(TAG, "Ad was loaded.");
        MyActivity.this.interstitialAd = interstitialAd;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        Log.d(TAG, loadAdError.getMessage());
        interstitialAd = null;
      }
    });
```

### Kotlin

```kotlin
AdManagerInterstitialAd.load(
  this,
  AD_UNIT_ID,
  AdManagerAdRequest.Builder().build(),
  object : AdManagerInterstitialAdLoadCallback() {
    override fun onAdLoaded(interstitialAd: AdManagerInterstitialAd) {
      Log.d(TAG, "Ad was loaded.")
      this@MyActivity.interstitialAd = interstitialAd
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      Log.d(TAG, adError.message)
      interstitialAd = null
    }
  },
)
```


> [!TIP]
> **Tip:** You can use ad load calls to build up a cache of preloaded ads before you intend to show them, so that ads can be shown with zero latency when needed. Because ads expire after an hour, you should clear this cache and reload with new ads every hour.

<br />

## Set the `FullScreenContentCallback`

The `FullScreenContentCallback` handles events related to displaying your
`InterstitialAd`. Before showing `InterstitialAd`, make sure to set the
callback:

### Java

```java
interstitialAd.setFullScreenContentCallback(
    new FullScreenContentCallback() {
      @Override
      public void onAdDismissedFullScreenContent() {
        // Called when fullscreen content is dismissed.
        Log.d(TAG, "The ad was dismissed.");
        // Make sure to set your reference to null so you don't
        // show it a second time.
        MyActivity.this.interstitialAd = null;
      }

      @Override
      public void onAdFailedToShowFullScreenContent(AdError adError) {
        // Called when fullscreen content failed to show.
        Log.d(TAG, "The ad failed to show.");
        // Make sure to set your reference to null so you don't
        // show it a second time.
        MyActivity.this.interstitialAd = null;
      }

      @Override
      public void onAdShowedFullScreenContent() {
        // Called when fullscreen content is shown.
        Log.d(TAG, "The ad was shown.");
      }

      @Override
      public void onAdImpression() {
        // Called when an impression is recorded for an ad.
        Log.d(TAG, "The ad recorded an impression.");
      }

      @Override
      public void onAdClicked() {
        // Called when ad is clicked.
        Log.d(TAG, "The ad was clicked.");
      }
    });
```

### Kotlin

```kotlin
interstitialAd?.fullScreenContentCallback =
  object : FullScreenContentCallback() {
    override fun onAdDismissedFullScreenContent() {
      // Called when fullscreen content is dismissed.
      Log.d(TAG, "Ad was dismissed.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      interstitialAd = null
    }

    override fun onAdFailedToShowFullScreenContent(adError: AdError) {
      // Called when fullscreen content failed to show.
      Log.d(TAG, "Ad failed to show.")
      // Don't forget to set the ad reference to null so you
      // don't show the ad a second time.
      interstitialAd = null
    }

    override fun onAdShowedFullScreenContent() {
      // Called when fullscreen content is shown.
      Log.d(TAG, "Ad showed fullscreen content.")
    }

    override fun onAdImpression() {
      // Called when an impression is recorded for an ad.
      Log.d(TAG, "Ad recorded an impression.")
    }

    override fun onAdClicked() {
      // Called when ad is clicked.
      Log.d(TAG, "Ad was clicked.")
    }
  }
```

## Show the ad

Interstitial ads should be displayed during natural pauses in the flow of an
app. Between levels of a game is a good example, or after the user completes a
task. To show an interstitial, use the [`show`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd.md.txt#show(android.app.Activity))
method.

### Java

```java
if (interstitialAd != null) {
  interstitialAd.show(this);
} else {
  Log.d(TAG, "The interstitial ad is still loading.");
}
```

### Kotlin

```kotlin
interstitialAd?.show(this)
```

## Always test with test ads

When building and testing your apps, make sure you use test ads rather than
live, production ads. Failure to do so can lead to suspension of your account.

The easiest way to load test ads is to use our dedicated test ad unit ID for
Android interstitials:

`/21775744923/example/interstitial`

It's been specially configured to return test ads for every request, and you're
free to use it in your own apps while coding, testing, and debugging. Just make
sure you replace it with your own ad unit ID before publishing your app.

For details on Google Mobile Ads SDK (Legacy) test ads, see
[Enable test ads](https://developers.google.com/ad-manager/mobile-ads-sdk/android/test-ads.md.txt).

## Examples on GitHub

- Interstitial ads example: [Java](https://github.com/googleads/googleads-mobile-android-examples/tree/main/java/admanager/InterstitialExample) \| [Kotlin](https://github.com/googleads/googleads-mobile-android-examples/tree/main/kotlin/admanager/InterstitialExample)

## Next steps

- Learn more about [ad targeting](https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting.md.txt).
- Learn more about [user privacy](https://developers.google.com/ad-manager/mobile-ads-sdk/android/privacy.md.txt).
- Explore [optimized SDK initialization and ad loading
  (beta)](https://developers.google.com/ad-manager/mobile-ads-sdk/android/optimize-initialization).