android – 如何以AdMob方式指定adUnitId?

前端之家收集整理的这篇文章主要介绍了android – 如何以AdMob方式指定adUnitId?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试通过编程方式将adUnitId设置为新的Google Play服务(旧AdMob)的广告.

我在XML中使用(在< include>)中使用):

  1. <com.google.android.gms.ads.AdView
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:ads="http://schemas.android.com/apk/res-auto"
  4. android:id="@+id/adView"
  5. android:layout_width="match_parent"
  6. android:layout_height="wrap_content"
  7. ads:adSize="BANNER"/>

这在onCreate()中:

  1. AdView mAdview = (AdView)findViewById(R.id.adView);
  2. mAdview.setAdUnitId(((App)getApplication()).getAdmobKey());
  3.  
  4. mAdview.setAdListener(new AdListener() {
  5. @Override
  6. public void onAdLoaded() {
  7. super.onAdLoaded();
  8. findViewById(R.id.adView).setVisibility(View.VISIBLE);
  9. }
  10. });
  11.  
  12. AdRequest adRequest = new AdRequest.Builder()
  13. .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
  14. .build();
  15. mAdview.loadAd(adRequest);

我得到:

The ad size and ad unit ID must be set before loadAd is called.

所以第二个选择是以编程方式制作广告.

新的XML:

  1. <LinearLayout
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_height="wrap_content"
  4. android:layout_width="match_parent"
  5. android:id="@+id/adView"
  6. />

代码

  1. AdView mAdview = new AdView(this);
  2. ...
  3. ((LinearLayout)findViewById(R.id.adView)).addView(mAdview);
  4. mAdview.loadAd(adRequest);

但我得到同样的错误.

我也尝试从com.google.android.gms.ads.AdView继承自定义视图,但它是最终的.

任何建议?

@H_301_32@

解决方法

当loadAd发生时,loadAd()方法检查if(mAdView.getAdSize()== null || mAdView.getAdUnitID()== null)).

尝试在调用loadAd以确定其状态之前记录(mAdView.getAdSize()== null || mAdView.getAdUnitID()== null)的布尔输出

  1. mAdView = new AdView(this);
  2. mAdView.setAdSize(AdSize.BANNER);
  3. mAdView.setAdUnitId(AD_UNIT_ID);
  4. AdRequest adRequest = new AdRequest.Builder()
  5. .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
  6. .build();
  7. if(mAdView.getAdSize() != null || mAdView.getAdUnitID() != null)
  8. mAdView.loadAd(adRequest);
  9. // else Log state of adsize/adunit
  10. ((LinearLayout)findViewById(R.id.adView)).addView(mAdview);
@H_301_32@ @H_301_32@

猜你在找的Android相关文章