当前位置: 首页 > 知识库问答 >
问题:

间隙式ads(admob)按钮打开第二个活动(第2页)

胡安怡
2023-03-14

我怀疑Admob中间代码在我的应用程序中的实现方式是否正确。

目标是显示插页广告时,按下按钮,是在主活动打开活动2。

示例MainActivity(按钮)

public void page1(View view)  
{

    Intent i = new Intent (this, activity2.class);
    startActivity(i);

 
    if (mInterstitialAd != null ) {
        mInterstitialAd.show(this);
    }

}

代码工作正常,但是否正确?。

另一个与节目有关的问题(…):我看过这两个版本

mInterstitialAd.show(this);
or
mInterstitialAd.show(MainActivity.this);

哪一个最好?

对不起,我刚开始,有点迷路了。

谢谢你的回答。

共有2个答案

轩辕啸
2023-03-14

经过几次测试,我认为这两个版本是正确的,但最终我会使用这段代码。(play-services-ads: 21.0.0

怎么看,执行正确吗?

<代码>主要活动。java:

public class MainActivity extends Activity {


    private InterstitialAd mInterstitialAd;
    private static final String TAG = "InfoApp";
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);


     //***** Initialize the Mobile Ads SDK.*********** -//
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
        //**********************************************************//

      adrequest_interstitial = new AdRequest.Builder().build();

      InterstitialAd.load(this,ConfigPubli.Ads_interstitial, adrequest_interstitial,
                new InterstitialAdLoadCallback()
                {
                    @Override
                    public void onAdLoaded(@NonNull InterstitialAd interstitialAd)
                    {
                        mInterstitialAd = interstitialAd;
                        Log.i(TAG, "onAdLoaded");

                    }

                    @Override
                    public void onAdFailedToLoad(@NonNull LoadAdError loadAdError)
                    {
                        // Handle the error
                        Log.i(TAG, loadAdError.getMessage());
                        mInterstitialAd = null;
                    }

                });
     }


      public void adstot(Intent i){


        mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
            @Override
            public void onAdDismissedFullScreenContent() {
                mInterstitialAd = null;
                startActivity(i);
                
            }

            @Override
            public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                mInterstitialAd = null;
                startActivity(i);

            }

        });
    }



    public void page2(View view){ //button

        Intent i = new Intent (this, Activity2.class);
        i.putExtra("valor","page2");

        int randomAd = (int)(Math.random()*10);
        if (mInterstitialAd != null && randomAd<=1) {   
            adstot(i);
            mInterstitialAd.show(this);   
        }
        else{
            startActivity(i);
        }   
     }
}

谢谢你的回答;-)

范麒
2023-03-14

根据间隙Ad实施指南,

活动加载后不应显示插屏广告。间隙广告应显示在自然过渡点。页面/活动加载后不应显示广告。您必须首先显示广告并在广告被取消/failed_to_show时开始活动。

不允许的进程

允许的进程

  • 链接中的图像使流程更易于理解

下面是一个示例:

public void openNewActivity()  
{
    // Create the Intent
    Intent i = new Intent (this, activity2.class);

    // Check mInterstitialAd 
    if (mInterstitialAd != null ) {
        // Create callback 
        mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
            @Override
            public void onAdDismissedFullScreenContent() {
                // Don't forget to make mIntersttialAd null
                mInterstitialAd = null;

                // times to start the activity
                startActivity(i);
            }

            @Override
            public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                // Don't forget to make mIntersttialAd null
                mInterstitialAd = null;

                // times to start the activity
                startActivity(i);
            }

        });
        //  Now show the ad
        mInterstitialAd.show(MainActivity.this);
    } else {
        // we don't have an interstitial ad to show
        // start the activity
        startActivity(i);
    }
}

希望这会有帮助。

请注意,AdMob没有在其任何文档中提供任何代码作为示例实现指南,根据其政策,该指南将是完美的。但我上面提供的代码似乎有点像上面链接中给出的指导。

 类似资料:
  • 今天我注册了adMob,开始在我的应用程序中制作adMob广告。第一个是一个游戏(带有viewcontrollers),我想在游戏结束后在屏幕上显示一个间隙广告,所以我想在游戏结束后加载间隙广告(只有在游戏结束后才能访问此视图,并且游戏持续一分钟,所以它不应该出现得太频繁) 我看过很多教程,在youtube和admob网站上,我有很多问题,比如:即使我导入了它,也找不到admob框架,我在构建时禁

  • 在AdMob中,当我调用插屏广告时,日志会得到“请求错误:不会发送请求,因为已使用间隙对象”。 我怎样才能修复它? 我的代码是:

  • 我在一个按钮中设置Admob中间广告触发以获得以下结果, 单击按钮并显示间隙广告 关闭广告后,继续播放视频 然后单击“上一步”按钮,返回到以前的activity 广告正在完美地显示,并继续到视频后,广告显示,但问题是,如果我再次点击按钮后,点击返回按钮,它是再现应用崩溃和停止应用程序。我在谷歌上搜索这个问题,但还是不走运。 这是我集成广告的代码, null null

  • 我想按下mainactivity中的一个按钮,该按钮将启动一个包含片段的新活动的意图。我写了一个主要的活动。带有main活动和第二个_活动按钮的xml。带有片段的xml。当我单击按钮时,第二个活动将由于xml中的片段而崩溃。我已经添加了一个标志,但它没有帮助。该应用程序的想法是通过按下主活动中的按钮,在第二个活动中获取谷歌地图。 我希望你能帮助我:/ 主要活动: 亚活性: activity_mai

  • 我目前正在处理一个Android项目,当用户在使用对话框主题的活动上按后退按钮时,我遇到了问题。 基本上,我有一个活动,让我们称之为我的活动,第二个活动使用@android: style/Theme.Holo.Dialog称为MyDialog。 当MyDialog活动显示在屏幕上时,活动对话框在对话中按预期启动,但当用户按下返回按钮时,对话框活动按预期关闭,但启动活动即MyActive似乎结束了,

  • 我合并了一个水平幻灯片导航组件(这需要使类扩展片段)。滑动部分工作正常。这里我有相应的<code>onClick() 到目前为止,我的代码还不多,所以我不会用相关的布局部分来混淆我的问题。任何帮助都是非常感谢的。 片段#1的Java代码 public class TasksFragment扩展Fragment { @ Override public View oncreate View(layou