Admob非页内广告在Android应用退出中无法点击

时间:2014-10-04 12:45:06

标签: android android-activity admob

我想在用户按下主要活动的按钮时,在应用程序结束时显示admob插页式广告。广告已展示,但广告无法点击。我的代码是

我将加载部分放在onCreate:

上的活动中
        interstitial = new InterstitialAd(getApplicationContext());
        interstitial.setAdUnitId("Ad UNIT ID");

        // Create ad request.
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();

        // Begin loading your interstitial.
        interstitial.loadAd(adRequest);

并在OnBackPressed中:

@Override
    public void onBackPressed() {
        super.onBackPressed();
        displayInterstitial();
    }

  protected void displayInterstitial() {
    Log.d(TAG, "start displayInterstitial()");
    if (null != interstitial && interstitial.isLoaded()) {
        Log.d(TAG, "displayInterstitial() loaded");
        interstitial.show();
    }
    Log.d(TAG, "end displayInterstitial()");
}

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

最简单的方法是:

        interstitial.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                finish();
            }
        });

但是,在我看来,最好在应用完成之前停留在您的应用中一秒钟。这样,很明显此广告仍然是您应用的一部分:

        interstitial.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                Handler handler = new Handler(); 
                handler.postDelayed(new Runnable() { 
                    public void run() { 
                        finish();
                    } 
                }, 1000);
            }
        });

BTW:关于在adlistener的onAdClosed中调用MainActivity.super.onBackPressed();的注释:我测试了它并抛出了IllegalStateException。我想这是因为调用onBackPressed的那一刻已经太晚了。但无论如何不需要它,所以不要理会它。超级onBackPressed方法本身可以从AdListener访问,并且编译得很好; - )

答案 1 :(得分:0)

@Override
public void onBackPressed() {
   Log.d(TAG, "onBackPressed Called");

   displayInterstitial();
   //finish();
   super.onBackPressed();
}