我在Android应用中创建插页式广告时遇到问题

时间:2015-11-16 21:34:29

标签: java android android-studio admob

我正在研究Android的数学类型游戏。但我想创建一个非页内广告。谷歌有一个如何创建一个但它有一个按钮来创建广告的例子。我希望我的广告只是在活动开始时启动,用户只需将其关闭即可。

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.Random;
import android.content.Intent;
import java.util.concurrent.TimeUnit;
import android.os.CountDownTimer;    
import com.google.android.gms.ads.*;

public class activity_2 extends MainActivity implements DialogInterface.OnClickListener{

int getWrong=0, num, sum = 0, score = 0, three, four;

Random rand = new Random();
int one = rand.nextInt(10) + 1;
int two = rand.nextInt(10) + 1;
int solution = one + two;
String myString = String.format("%d + %d =", one, two);

   InterstitialAd mInterstitialAd;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);

    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");

    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            requestNewInterstitial();
          //  beginPlayingGame(); * the google sample had a this class which i dont want to work with 
        }
    });


    TextView text = (TextView) findViewById(R.id.Question);
    text.setText("" + myString);


    TextView timeSTART = (TextView) findViewById(R.id.TimmerT);
        timeSTART.setText("10");

requestNewInterstitial();    
    }

private void requestNewInterstitial() {
    AdRequest adRequest = new AdRequest.Builder()
              .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
              .build();

    mInterstitialAd.loadAd(adRequest);
}

3 个答案:

答案 0 :(得分:1)

  

您无法在不加载的情况下显示添加内容......!

为什么你没有为此目的使用Singleton

您应该按照以下步骤操作:

  • 首先,在Application(而不是Activity)类中创建一个公共静态InterstitialAd对象..!

  • 然后,您需要在应用程序的mInterstitialAd方法中初始化您的onCreate对象,而不是在活动的基础上创建....

  • 之后,从您的Activity类中调用mInterstitialAd对象的show方法......!

此程序允许您在应用中的任意位置调用show Google Add ...!

您的Application类应如下所示,

    public class DefaultApplication extends Application {

        public static InterstitialAd mInterstitialAd;
        @Override
        public void onCreate() {
            super.onCreate();

             mInterstitialAd = new InterstitialAd(this);
             mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");

             mInterstitialAd.setAdListener(new AdListener() {
                  @Override
                  public void onAdClosed() {
                      requestNewInterstitial();
                     //  beginPlayingGame(); * the google sample had a this class which i dont want to work with 
                  }
             });
        }
private void requestNewInterstitial() {
    AdRequest adRequest = new AdRequest.Builder()
              .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
              .build();

    mInterstitialAd.loadAd(adRequest);
}
    }

要加载“从活动添加”,请执行以下操作,

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_2);
    DefaultApplication.mInterstitialAd.show();

}

答案 1 :(得分:1)

首先,您必须初始化MobileAds SDK。

因此,请转到您的应用程序并执行缺少的操作:

MobileAds.initialize(context, getString(R.string.banner_ad_unit_id));

在此之后,只需转到您的活动并展示您的插页式广告:

if (interstitialAd != null && interstitialAd.isLoaded()) {
    interstitialAd.show();
}

答案 2 :(得分:0)

Admob示例使用一个按钮,您可以随时使用该概念,同时也可以显示您需要一个特定的事件来展示广告。

您需要在应用中找到可以展示广告的特定点,例如游戏/关卡之间。

在应用启动时显示广告会中断用户流程,提供糟糕的用户体验并违反Admob政策,并可能会禁止您的帐户。