在应用程序不在前台时,可以使用以下代码示例来解决不显示插页广告的问题:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
public class MyFragment extends Fragment {
private InterstitialAd mInterstitialAd;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_my, container, false);
// 创建插页广告
mInterstitialAd = new InterstitialAd(getActivity());
mInterstitialAd.setAdUnitId("Your_InterstitialAd_Unit_ID");
// 设置插页广告加载监听器
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// 插页广告加载成功,展示广告
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
@Override
public void onAdFailedToLoad(int errorCode) {
// 插页广告加载失败,打印错误码
Log.e("InterstitialAd", "Ad failed to load with error code: " + errorCode);
}
@Override
public void onAdClosed() {
// 插页广告关闭后,释放资源
mInterstitialAd = null;
// 在此处可以执行其他操作,如重新加载新的插页广告
Toast.makeText(getActivity(), "InterstitialAd closed", Toast.LENGTH_SHORT).show();
}
});
// 判断应用程序是否在前台运行
if (isAppInForeground()) {
// 应用程序在前台,加载插页广告
loadInterstitialAd();
} else {
// 应用程序不在前台,不加载插页广告
Toast.makeText(getActivity(), "App is not in the foreground", Toast.LENGTH_SHORT).show();
}
return rootView;
}
// 加载插页广告
private void loadInterstitialAd() {
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
}
// 判断应用程序是否在前台运行
private boolean isAppInForeground() {
Activity activity = getActivity();
if (activity != null) {
// 获取应用程序的最顶层视图
View topView = activity.getWindow().getDecorView().getRootView();
// 判断最顶层视图是否可见
return topView.getVisibility() == View.VISIBLE;
}
return false;
}
}
上面的示例代码中,使用了Google AdMob库来创建和加载插页广告。在onCreateView()
方法中,通过判断应用程序是否在前台运行来决定是否加载插页广告。如果应用程序在前台,就调用loadInterstitialAd()
方法加载插页广告;如果应用程序不在前台,就不加载插页广告。同时,设置了插页广告的加载监听器,当广告加载成功时,会自动展示广告;当广告加载失败时,会打印错误码;当广告关闭后,会释放资源,并可以执行其他操作,如重新加载新的插页广告。
请注意,在使用示例代码时,需要将"Your_InterstitialAd_Unit_ID"
替换为自己的插页广告单元ID。