单击菜单按钮后如何在启动新 activity 之前显示插页式广告?

How to show interstitial Ad before launching new activity after clicking a menu button?

我使用选项菜单按钮转到第二个 activity。当用户点击该菜单按钮时,插页式广告会在第二次启动后显示 activity。 但是我想在启动第二个 activity 之前显示插页式广告,当用户点击插页式广告的关闭按钮时,第二个 activity 应该启动。

我正在使用下面的代码来显示插页式广告。

case R.id.button_id:
   startActivity(new Intent(this, secondactivity.class ));               

                    interstitial = new InterstitialAd(getApplicationContext());
                    interstitial.setAdUnitId(getString(R.string.admob_interstetial_ad));
                    AdRequest adRequest9 = new AdRequest.Builder()
                            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)


                            .build();
                    interstitial.loadAd(adRequest9);
                    interstitial.setAdListener(new AdListener() {
                        public void onAdLoaded() {
                            if (interstitial.isLoaded()) {
                                interstitial.show();
                            }
                        }
                    });


                    return true;

也许是这样的?使用onAdClosed函数启动activity

interstitial.setAdListener(new AdListener() {
 public void onAdLoaded() {
  if (interstitial.isLoaded()) {
      interstitial.show();
   }
 }
     @Override
        public void onAdClosed() {
             startActivity(new Intent(this, secondactivity.class ));    
            // Code to be executed when when the interstitial ad is closed.
            Log.i("Ads", "onAdClosed");
        } 
 });

在此处阅读更多相关信息: https://developers.google.com/admob/android/interstitial

@user8240773 建议的答案是正确的,但有更有效的方法来处理您的问题。这是我的代码:

// Has the interstitial loaded successfully?
// If it has loaded, perform these actions
if(mInterstitialAd.isLoaded()) {
    // Step 1: Display the interstitial
    mInterstitialAd.show();
    // Step 2: Attach an AdListener
    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            // Step 2.1: Load another ad
            AdRequest adRequest = new AdRequest.Builder()
                                    .addTestDevice(AdRequest.DEVICE_EMULATOR_ID)
                                    .build();
            mInterstitialAd.loadAd(adRequest);

            // Step 2.2: Start the new activity
            startActivity(new Intent(Activity1.this, Activity2.class));
        }
    });
}
// If it has not loaded due to any reason simply load the next activity
else {
    startActivity(new Intent(Activity1.this, Activity2.class));
}

这样一来,您也不必担心由于没有互联网连接或其他任何原因而无法加载广告。此代码将按照您描述问题的方式处理所有内容。

这段代码对我有用

Intent intent = new Intent(getApplicationContext(),  MainActivity.class); 
startActivity(intent); 
    if (mInterstitialAd.isLoaded()) {
        mInterstitialAd.show();
    }
finish();

这是最新的 SDK。

在应用启动时加载广告。

要在用户转到另一个 activity 之前展示广告,请使用此代码。如果您希望在点击次数后展示广告,您可以使用计数器。

像这样

在应用程序启动时加载广告

   public InterstitialAd mInterstitialAd;
  private int counter = 0;

 AdRequest adRequest = new AdRequest.Builder().build();

    InterstitialAd.load(this, AD_UNIT_ID, adRequest, new InterstitialAdLoadCallback() {
        @Override
        public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
            // The mInterstitialAd reference will be null until
            // an ad is loaded.
            super.onAdLoaded(interstitialAd);
            mInterstitialAd = interstitialAd;

        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            // Handle the error

            mInterstitialAd = null;
        }
    });

用这个来展示

case R.id.button_id:

if (counter == 1) {
                if (mInterstitialAd != null) {
                    mInterstitialAd.show(MainActivity.this);
                    mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
                        @Override
                        public void onAdDismissedFullScreenContent() {
                            // Called when fullscreen content is dismissed.

                            startActivity(new Intent(Activity1.this, Activity2.class));
                        
                       }

                        @Override
                        public void onAdFailedToShowFullScreenContent(AdError adError) {
                            // Called when fullscreen content failed to show.
                            Log.d("TAG", "The ad failed to show.");
                        }

                    });

                } else {
            //load add again as above and visit second activity
         `startActivity(new Intent(Activity1.this, Activity2.class));`
          counter=0;
                   
              
                }

            } else { 

      startActivity(new Intent(Activity1.this, Activity2.class));`
              }
package com.androidx.sharebd.fragment;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.androidx.sharebd.R;
import com.androidx.sharebd.activity.ConnectionManagerActivity;
import com.androidx.sharebd.activity.ContentSharingActivity;
import com.androidx.sharebd.model.TitleSupport;
import com.genonbeta.android.framework.ui.callback.SnackbarSupport;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class HomeFragment
extends com.genonbeta.android.framework.app.Fragment
implements TitleSupport,
SnackbarSupport,
com.genonbeta.android.framework.app.FragmentImpl {

  @Nullable@Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.fragment_home, container, false);

    Button actionReceive = (Button) view.findViewById(R.id.receive);

    actionReceive.setOnClickListener(new View.OnClickListener() {@Override
      public void onClick(View view) {

        /// Interstitial ads Start

        InterstitialAd mInterstitial = new InterstitialAd(getActivity());
        mInterstitial.setAdUnitId(getString(R.string.interstitial_ad_unit));
        mInterstitial.loadAd(new AdRequest.Builder().build());
        mInterstitial.setAdListener(new AdListener() {@Override
          public void onAdLoaded() {
            // TODO Auto-generated method stub
            super.onAdLoaded();
            if (mInterstitial.isLoaded()) {
              mInterstitial.show();
            }
          }

          @Override
          public void onAdClosed() {

            /// Your main code start ( where you want to go )

            startActivity(new Intent(getContext(), ConnectionManagerActivity.class).putExtra(ConnectionManagerActivity.EXTRA_ACTIVITY_SUBTITLE, getString(R.string.text_receive)).putExtra(ConnectionManagerActivity.EXTRA_REQUEST_TYPE, ConnectionManagerActivity.RequestType.MAKE_ACQUAINTANCE.toString()));

            /// Your main code end ( where you want to go )

            Log.i("Ads", "onAdClosed");
          }

          @Override
          public void onAdFailedToLoad(int errorCode) {

            /// Your main code start ( where you want to go )

            startActivity(new Intent(getContext(), ConnectionManagerActivity.class).putExtra(ConnectionManagerActivity.EXTRA_ACTIVITY_SUBTITLE, getString(R.string.text_receive)).putExtra(ConnectionManagerActivity.EXTRA_REQUEST_TYPE, ConnectionManagerActivity.RequestType.MAKE_ACQUAINTANCE.toString()));

            /// Your main code end ( where you want to go )

            Log.i("Ads", "onAdFailedToLoad");
          }

        });

        /// Interstitial ads end

      }
    });

    Button actionSend = (Button) view.findViewById(R.id.send);
    actionSend.setOnClickListener(new View.OnClickListener() {@Override
      public void onClick(View view) {

        /// Interstitial ads Start

        InterstitialAd mInterstitial = new InterstitialAd(getActivity());
        mInterstitial.setAdUnitId(getString(R.string.interstitial_ad_unit));
        mInterstitial.loadAd(new AdRequest.Builder().build());
        mInterstitial.setAdListener(new AdListener() {@Override
          public void onAdLoaded() {
            // TODO Auto-generated method stub
            super.onAdLoaded();
            if (mInterstitial.isLoaded()) {
              mInterstitial.show();
            }
          }

          @Override
          public void onAdClosed() {

            /// Your main code start ( where you want to go )
            startActivity(new Intent(getContext(), ContentSharingActivity.class));

            /// Your main code End ( where you want to go )

            Log.i("Ads", "onAdClosed");
          }

          @Override
          public void onAdFailedToLoad(int errorCode) {
            startActivity(new Intent(getContext(), ContentSharingActivity.class));
            Log.i("Ads", "onAdFailedToLoad");
          }

        });

        /// Interstitial ads End

      }
    });

    return view;
  }

  @Override
  public CharSequence getTitle(Context context) {
    return context.getString(R.string.text_home);
  }

}