Reputation: 344
Here is the entire class that I am trying to load a banner ad into (createAd() method does the work)
public class HomeActivity extends Activity {
private HomeView homeView;
private ImageView playButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// playButton = (ImageView)findViewById(R.id.playButton);
// playButton.setImageBitmap(BitmapFactory.decodeResource(getResources(),
// R.drawable.play));
// setListener();
setContentView(R.layout.home_main);
createAd();
}
private void setListener (){
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
playButton.setImageBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.play2));
playGame();
}
});
}
private void createAd(){
setContentView(R.layout.home_main);
AdView adView = (AdView)findViewById(R.id.bottomAd);
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
adRequestBuilder.addTestDevice("FEACCF89D31180ABDD853C9C3DD2E871");
// .addTestDevice("1744314CD0C7B0619F94D44CE2E5093E");
adView.loadAd(adRequestBuilder.build());
}
public void playGame() {
SharedPreferences savedData = getApplicationContext()
.getSharedPreferences("lastScore", Context.MODE_PRIVATE);
int score = savedData.getInt("lastScore", Context.MODE_PRIVATE);
Intent intent = new Intent(HomeActivity.this, GamePlay.class);
intent.putExtra("lastScore", score);
startActivity(intent);
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Here is the xml of home_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/homeRelative"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".HomeActivity">
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottomAd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/admob_banner_id">
</com.google.android.gms.ads.AdView>
</RelativeLayout>
Here is my log after the most recent run
01-01 16:00:32.235 26387-26387/com.rune.colorhunt D/OpenGLRenderer﹕ Enabling debug mode 0
01-01 16:00:32.275 652-796/? I/CrashAnrDetector﹕ onPackageUpdateFinished : com.rune.colorhunt
01-01 16:00:37.351 26387-26416/com.rune.colorhunt D/dalvikvm﹕ DexOpt: --- BEGIN 'ads976472321.jar' (bootstrap=0) ---
01-01 16:00:37.361 26387-26387/com.rune.colorhunt V/WebViewChromium﹕ Binding Chromium to the main looper Looper (main, tid 1) {41d00b38}
01-01 16:00:37.361 26387-26387/com.rune.colorhunt I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
01-01 16:00:37.361 26387-26387/com.rune.colorhunt I/BrowserProcessMain﹕ Initializing chromium process, renderers=0
01-01 16:00:37.391 26387-26426/com.rune.colorhunt W/chromium﹕ [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
01-01 16:00:37.421 26387-26387/com.rune.colorhunt I/Ads﹕ Starting ad request.
01-01 16:00:37.441 26387-26416/com.rune.colorhunt D/dalvikvm﹕ DexOpt: --- END 'ads976472321.jar' (success) ---
01-01 16:00:37.441 26387-26416/com.rune.colorhunt D/dalvikvm﹕ DEX prep '/data/data/com.rune.colorhunt/cache/ads976472321.jar': unzip in 0ms, rewrite 91ms
01-01 16:00:37.611 26387-26394/com.rune.colorhunt I/dalvikvm﹕ Total arena pages for JIT: 11
01-01 16:00:37.611 26387-26394/com.rune.colorhunt I/dalvikvm﹕ Total arena pages for JIT: 12
01-01 16:00:37.621 26387-26394/com.rune.colorhunt I/dalvikvm﹕ Total arena pages for JIT: 13
01-01 16:00:37.621 26387-26394/com.rune.colorhunt I/dalvikvm﹕ Total arena pages for JIT: 14
01-01 16:00:37.651 26387-26431/com.rune.colorhunt W/Ads﹕ There was a problem getting an ad response. ErrorCode: 2
01-01 16:00:37.691 26387-26387/com.rune.colorhunt I/Ads﹕ Scheduling ad refresh 60000 milliseconds from now.
01-01 16:00:37.691 26387-26387/com.rune.colorhunt W/Ads﹕ Failed to load ad: 2
01-01 16:01:37.715 26387-26387/com.rune.colorhunt I/Ads﹕ Starting ad request.
01-01 16:01:37.825 26387-26490/com.rune.colorhunt W/Ads﹕ There was a problem getting an ad response. ErrorCode: 2
01-01 16:01:37.845 26387-26387/com.rune.colorhunt I/Ads﹕ Scheduling ad refresh 60000 milliseconds from now.
01-01 16:01:37.845 26387-26387/com.rune.colorhunt W/Ads﹕ Failed to load ad: 2
01-01 16:02:37.889 26387-26387/com.rune.colorhunt I/Ads﹕ Starting ad request.
01-01 16:02:38.009 26387-26531/com.rune.colorhunt W/Ads﹕ There was a problem getting an ad response. ErrorCode: 2
01-01 16:02:38.039 26387-26387/com.rune.colorhunt I/Ads﹕ Scheduling ad refresh 60000 milliseconds from now.
01-01 16:02:38.039 26387-26387/com.rune.colorhunt W/Ads﹕ Failed to load ad: 2
01-01 16:03:38.972 26387-26387/com.rune.colorhunt I/Ads﹕ Starting ad request.
01-01 16:03:39.062 26387-26783/com.rune.colorhunt W/Ads﹕ There was a problem getting an ad response. ErrorCode: 2
01-01 16:03:39.062 26387-26387/com.rune.colorhunt I/Ads﹕ Scheduling ad refresh 60000 milliseconds from now.
01-01 16:03:39.062 26387-26387/com.rune.colorhunt W/Ads﹕ Failed to load ad: 2
If somebody would help me, that would be amazing. I literally have no idea what the problem could be. Perhaps im missing something very simple and just need another pair of eyes. Any help is appreciated, thanks.
Upvotes: 21
Views: 31595
Reputation: 4910
To fix the Admob ad will not load. Error 2
error
If the above two are correct, then
restart your device
Upvotes: 1
Reputation: 1111
In our case, our company had some settings in the firewall to block ads. It worked when I switched to an open internet connection without a firewall.
Upvotes: 0
Reputation: 21
In the emulator of Android Studio my issue was the wrong virtual location of the device: once I set it as my real location it started working.
Upvotes: 0
Reputation: 823
Error no 2 means ERROR_CODE_NETWORK_ERROR
.
so check your internet connection and still not showing ads then just restart your mobile and check...that was worked for me.
Upvotes: 16
Reputation: 3
try 'disable background data on mobile networks' set as disable in google services, it work for me
Upvotes: 0
Reputation: 31
I had the same issue of the ad not appearing on the physical test device screen.
I switched off my wifi and started using 3g mobile data and then my ads started appearing on the physical test devices.
I also have a difference in dependecies:
com.google.android.gms:play-services-ads:9.2.0
instead of 11.6.2
Upvotes: 3
Reputation: 607
If using real device, check also other apps, you know they contain ads, if ads are shown. Also check individually on mobile network and on Wi-Fi.
For me, it does not show only on mobile network and in all apps. Deleting data of Google Play Services help me, and ads starts showing again. Until GPS downloads its data back. So it worked for about one minute. :-D
Upvotes: 1
Reputation: 21
This behavior is being caused by an app making too many ad requests at once, which puts the SDK into a bad state. Restarting Google play services, which can effectively be done by clearing all data, fixes the issue for me. The SDK fix for this issue will be included in the next Google play services release. Once your device picks up the update, you won't need to update your app. this is known issue of sdk
Upvotes: 2
Reputation: 31
I had the similar problem. The internet connection was OK and there was no ad blocker installed.
The problem might be related with your test device. Check if you have another application that contains Admob with your test device. You can also check with another device and another app that contains Admob.
In my case I realized that my test device has the internet connection but doesn't show up any Admob ads in different applications. So I tried to restart my test device and It worked.
Upvotes: 3
Reputation: 6314
Another issue could be an adblocker application as suggested in this post: https://stackoverflow.com/a/36010639/3596576 by @Durian.
For me this was the issue.
Upvotes: 4
Reputation: 5611
Check that your device has a proper internet connection. Without internet connection you will not get ads.
Upvotes: 37
Reputation: 12847
Admob ad will not load. Error 2 appears if date or time is wrong on your device, just set autodate correcting on your device
Upvotes: 20
Reputation: 6360
at first be clear about which type of add you want to load, interstitial or banner ad. if you want to load banner ad, create a banner ad_unit_id on admob site, then use AdView directly inside your activity view as below:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/xadView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/admob_banner_ad_unit_id" />
and just request to load banner ad from your code as below: write this code in your activity inside oncreate after setcontentview
AdView mAdView = (AdView) findViewById(R.id.xadView);
AdRequest adRequest = new AdRequest.Builder().addTestDevice(
AdRequest.DEVICE_ID_EMULATOR).build();
mAdView.loadAd(adRequest);
AND
if you want to load interstial ads, create a interstitial ad_unit_id on admob site, then use it in below method:
public void showFullScreenAd() {
try {
com.google.android.gms.ads.InterstitialAd interstitial = new com.google.android.gms.ads.InterstitialAd(context);
interstitial
.setAdUnitId(ADMOB_INTERSTITIAL_AD_UNIT_ID);
// Check the logcat output for your hashed device ID to get test ads
// on
// a physical device.
com.google.android.gms.ads.AdRequest adRequest = new AdRequest.Builder()
.build();
// Load the interstitial ad.
interstitial.loadAd(adRequest);
interstitial
.setAdListener(new com.google.android.gms.ads.AdListener() {
@Override
public void onAdLoaded() {
interstitial.show();
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
NOTE: important thing is that sometimes we use banner ad unit id inside interstitial ads or interstitial ad unit id inside banner ads, so this error occurs.
Upvotes: 1