我想在用户按下主要活动的按钮时,在应用程序结束时显示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()");
}
有人可以帮我解决这个问题吗?
答案 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();
}