I am trying to get AdMob ads to display in my android application and have been unable to do so. I have contacted their support and have not received any response in almost a week, so I figured I would now ask for help here.
First some code:
AndroidManifest.xml
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1" package="com.foo.application">
<application>
<meta-data
android:value="admob-publisher-id-here"
android:name="ADMOB_PUBLISHER_ID" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
Yes, admob-publisher-id-here is my real publisher id in the actual manifest file.
main_layout.xml
<LinearLayout
android:id="@+id/adhost"
android:layout_width="fill_parent"
android:padding="5dip" android:layout_height="wrap_content"
android:minHeight="20dip"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.foo.application">
<com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:backgroundColor="#000000"
app:primaryTextColor="#FFFFFF"
app:secondaryTextColor="#CCCCCC"
app:keywords="android at&t t-mobile iphone blah"/>
</LinearLayout>
attr.xml
<resources>
<declare-styleable name="com.admob.android.ads.AdView">
<attr name="backgroundColor" format="color" />
<attr name="primaryTextColor" format="color" />
<attr name="secondaryTextColor" format="color" />
<attr name="keywords" format="string" />
<attr name="refreshInterval" format="integer" />
</declare-styleable>
</resources>
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.admob.android.ads.AdManager;
import com.admob.android.ads.AdView;
import com.foo.application.R;
public class MainActivity extends Activity {
private AdView ad;
public MainActivity ( ) {
AdManager.setTestDevices ( new String[] {
// made this up for this
"012345678994814751742145548AAAAAAA"
} );
AdManager.setTestAction ( "url" );
}
@Override
public void onCreate ( Bundle savedInstanceState ) {
super.onCreate ( savedInstanceState );
setContentView(R.layout.main_layout);
if ( AdManager.isTestDevice ( this ) ) {
// this logs
Log.w ( "foo-app", "we are on a test device" );
}
ad = ( AdView ) this.findViewById ( R.id.ad );
if ( ad != null ) {
ad.setVisibility ( View.VISIBLE );
ad.setAdListener ( new AdListener () );
}
}
}
AdListener.java
package com.foo.application
import android.util.Log;
import com.admob.android.ads.AdView;
import com.admob.android.ads.SimpleAdListener;
class AdListener extends SimpleAdListener {
@Override
public void onFailedToReceiveAd ( AdView adView ) {
// this is what logs
Log.w ( "foo-app", "failed to receive ad" );
super.onFailedToReceiveAd ( adView );
}
@Override
public void onFailedToReceiveRefreshedAd ( AdView adView ) {
Log.w ( "foo-app", "failed to receive refreshed ad" );
super.onFailedToReceiveRefreshedAd ( adView );
}
@Override
public void onReceiveAd ( AdView adView ) {
Log.w ( "foo-app", "receive ad" );
super.onReceiveAd ( adView );
}
@Override
public void onReceiveRefreshedAd ( AdView adView ) {
Log.w ( "foo-app", "receive refreshed ad" );
super.onReceiveRefreshedAd ( adView );
}
}
In the logcat, i see the following:
INFO/AdMobSDK(29541): To get test ads on this device use AdManager.setTestDevices( new String[] { "012345678994814751742145548AAAAAAA" } )
WARN/AdMobSDK(29541): Ignoring requestFreshAd() because we are requesting an ad right now already.
WARN/AdMobSDK(29541): Ignoring requestFreshAd() because we are requesting an ad right now already.
WARN/foo-app(29541): we are on a test device
WARN/foo-app(29541): failed to receive ad
The AdListener is indicating that it is unable to retrieve the ad. I have an active data connection, plus I am in Test Mode, so it is supposed to always show an ad, according to the admob wiki. There are no errors in the logcat, nor is the application force closing at all.
Anyone have any ideas or do you see something I am doing wrong?
update: I got a response from admob, but all they said was i was creating the aeveiw twice, which I am not