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

时间:2017-07-01 10:32:59

标签: android admob interstitial

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

我使用以下代码显示插页式广告。

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;

4 个答案:

答案 0 :(得分:12)

@ 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));
}

这样,由于没有互联网连接或其他任何原因,您也不必担心广告未加载。所有内容都将由您描述问题的方式处理。

答案 1 :(得分:1)

也许这样的事情?使用onAdClosed功能启动活动

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

答案 2 :(得分:0)

此代码适用于我

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

答案 3 :(得分:0)

这是最新的 SDK。

在应用启动时加载广告。

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

像这样

在应用启动时加载广告

   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));`
              }