Android Studio中AdView正常显示但红米Note8 Pro真机不显示
AdMob集成问题:布局预览正常但红米Note 8 Pro真机不显示AdView
在Android Studio布局预览中AdView显示正常,但在Xiaomi Redmi Note 8 Pro真机运行时,AdView完全不显示,连空的AdView都看不到。
XML布局代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:layout_marginBottom="5dp" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy"> </com.google.android.gms.ads.AdView> </RelativeLayout>
注:真实Banner ID已替换为占位符,该ID来自AdMob后台。
Manifest清单代码
<?xml version="1.0" encoding="utf-8"?> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.SchoolTimeTable" tools:targetApi="31"> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> <activity android:name=".TaskLoadActivity" android:exported="false"> <meta-data android:name="android.app.lib_name" android:value="" /> </activity> <activity android:name=".OnSubjectClickActivity" android:exported="false"> <meta-data android:name="android.app.lib_name" android:value="" /> </activity> <activity android:name=".AddSubjectActivity" android:exported="false"> <meta-data android:name="android.app.lib_name" android:value="" /> </activity> <activity android:name=".MainActivity" android:exported="true"> <meta-data android:name="android.app.lib_name" android:value="" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
注:真实应用ID已替换为占位符,该ID来自AdMob后台。
MainActivity的onCreate方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { } }); AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); }
使用的依赖版本:
implementation 'com.google.android.gms:play-services-ads:22.5.0'
排查解决方案
- 确认网络权限:检查红米手机系统设置中该APP的网络权限是否开启(包括移动数据和WiFi),部分国产手机会默认限制APP网络访问。
- 改用测试广告ID:替换AdView的
adUnitId为AdMob官方测试ID:ca-app-pub-3940256099942544/6300978111,排除真实广告单元未审核通过或无广告填充的问题。 - 调整布局参数:将AdView的
android:layout_width改为match_parent,BANNER广告宽度需适配屏幕,wrap_content可能导致真机布局异常。 - 修正广告加载时机:将
loadAd调用移到MobileAds.initialize的回调方法内,确保AdMob初始化完成后再请求广告:MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }); - 查看日志信息:在Android Studio的LogCat中过滤关键词
Ads,查看AdMob初始化、广告请求的错误日志,定位具体问题。 - 关闭系统广告拦截:红米手机自带广告拦截功能,进入系统设置关闭对该APP的广告拦截,或将APP加入白名单。
- 核对ID正确性:再次确认Manifest中的
APPLICATION_ID和AdView的adUnitId与AdMob后台完全一致,注意应用ID是~分隔,广告单元ID是/分隔。
内容的提问来源于stack exchange,提问作者Milutin Nedeljkovic
相关产品推荐
相关产品推荐

