简体   繁体   中英

Admob ad will not load. Error 2. It worked before but suddenly stopped

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.

Check that your device has a proper internet connection. Without internet connection you will not get ads.

Admob ad will not load. Error 2 appears if date or time is wrong on your device, just set autodate correcting on your device

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.

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.

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

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

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.

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.

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

尝试在谷歌服务中将“禁用移动网络上的后台数据”设置为禁用,它对我有用

在 Android Studio 的模拟器中,我的问题是设备的错误虚拟位置:一旦我将其设置为我的真实位置,它就开始工作。

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM