我想检查AdView是否加载广告并且是否可见,因此需要显示屏上的空间,或者如果没有加载广告,例如,如果互联网连接不可用。 如果它没有加载广告,我可以将空间用于其他内容。
如何做到这一点?
答案 0 :(得分:6)
您可以为此目的实施AdListener。
只需覆盖onAdFailedToLoad
和onAdLoaded
。
答案 1 :(得分:2)
mAdView = (AdView) findViewById(R.id.adView);
mAdView.setAdListener(new AdListener() {
// Called when an ad is loaded.
@Override
public void onAdLoaded() {
Log.e(TAG, "Google onAdLoaded");
}
// Called when an ad failed to load.
@Override
public void onAdFailedToLoad(int error) {
String message = "Google onAdFailedToLoad: " + getErrorReason(error);
Log.e(TAG, message);
}
// Called when an Activity is created in front of the app
// (e.g. an interstitial is shown, or an ad is clicked and launches a new Activity).
@Override
public void onAdOpened() {
Log.e(TAG, "Google onAdOpened");
}
// Called when an ad is clicked and about to return to the application.
@Override
public void onAdClosed() {
Log.e(TAG, "Google onAdClosed");
}
// Called when an ad is clicked and going to start a new Activity that will leave the application
// (e.g. breaking out to the Browser or Maps application).
@Override
public void onAdLeftApplication() {
Log.d(TAG, "Google onAdLeftApplication");
}
});
mAdRequest = new AdRequest.Builder().build();
mAdView.loadAd(mAdRequest);
private String getErrorReason(int errorCode) {
// Gets a string error reason from an error code.
String errorReason = "";
switch (errorCode) {
case AdRequest.ERROR_CODE_INTERNAL_ERROR:
errorReason = "Internal error";
break;
case AdRequest.ERROR_CODE_INVALID_REQUEST:
errorReason = "Invalid request";
break;
case AdRequest.ERROR_CODE_NETWORK_ERROR:
errorReason = "Network Error";
break;
case AdRequest.ERROR_CODE_NO_FILL:
errorReason = "No fill";
break;
}
return errorReason;
}