You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView项目中AdMob横幅广告加载失败求助

解决WebView中AdMob横幅广告无法加载的问题

从你提供的核心配置文件入手,逐一排查常见问题:

1. 检查build.gradle.kts配置

  • 确认已添加正确的AdMob依赖,建议使用最新稳定版:
    dependencies {
        implementation("com.google.android.gms:play-services-ads:22.6.0")
    }
    
  • 确保google()仓库已在仓库列表中配置:
    repositories {
        google()
        mavenCentral()
    }
    

2. 检查AndroidManifest.xml配置

  • 确认已在<application>标签内添加AdMob应用ID的meta-data(注意是应用ID,不是广告单元ID):
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="你的AdMob应用ID"/>
    
  • 必须添加网络相关权限:
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
  • 若targetSdkVersion ≥33,可添加通知权限(部分广告场景需要):
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    

3. 检查MainActivity.java中的广告逻辑

  • 确保在Activity启动时初始化MobileAds,且在初始化完成后加载广告:
    import com.google.android.gms.ads.MobileAds;
    import com.google.android.gms.ads.initialization.InitializationStatus;
    import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
    import com.google.android.gms.ads.AdView;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdListener;
    import com.google.android.gms.ads.LoadAdError;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 初始化AdMob
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
                loadBannerAd();
            }
        });
        
        // 你的WebView初始化代码...
    }
    
    private void loadBannerAd() {
        AdView adView = findViewById(R.id.adView);
        // 测试阶段建议使用官方测试ID:ca-app-pub-3940256099942544/6300978111
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
        
        // 添加监听获取错误详情
        adView.setAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                super.onAdFailedToLoad(loadAdError);
                Log.e("AdMob", "加载失败: " + loadAdError.getMessage());
            }
        });
    }
    
  • 不要在WebView的onPageFinished回调中重复初始化或加载广告,避免逻辑冲突。

4. 检查activity_main.xml中的AdView布局

  • 确保AdView的属性配置正确,且已添加ads命名空间:
    <!-- 根布局添加命名空间 -->
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    
    <!-- AdView布局示例 -->
    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="BANNER"
        ads:adUnitId="你的广告单元ID"/>
    

5. 其他排查要点

  • 测试阶段优先使用官方测试广告单元ID,正式ID未通过审核前无法加载广告。
  • 检查设备网络状态,AdMob需要稳定的网络连接。
  • 查看Logcat中的AdMob相关日志,搜索AdMob或Ads关键词,获取具体错误原因。
  • 确认你的AdMob账号状态正常,无违规限制。

内容的提问来源于stack exchange,提问作者Mega DeLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:58:13