Como especificar adUnitId programaticamente para a AdMob?
Estou tentando definir adUnitId programaticamente para anúncios dos novos serviços do Google Play (antiga AdMob).
Eu tenho isso em XML (usado em um<include>
):
<com.google.android.gms.ads.AdView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"/>
e isso em onCreate ():
AdView mAdview = (AdView)findViewById(R.id.adView);
mAdview.setAdUnitId(((App)getApplication()).getAdmobKey());
mAdview.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
findViewById(R.id.adView).setVisibility(View.VISIBLE);
}
});
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
mAdview.loadAd(adRequest);
E eu recebo:
O tamanho do anúncio e o ID do bloco de anúncios devem ser definidos antes que o loadAd seja chamado.
Portanto, a segunda opção era criar o anúncio programaticamente.
O novo XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/adView"
/>
O novo código:
AdView mAdview = new AdView(this);
...
((LinearLayout)findViewById(R.id.adView)).addView(mAdview);
mAdview.loadAd(adRequest);
Mas eu recebo o mesmo erro.
Tentei também herdar de com.google.android.gms.ads.AdView para criar uma exibição personalizada, mas é final.
Alguma sugestão?